0
我在一个轨道形式的持续时间的互动,目前它是一个文本框和格式要求MM:SS如何验证对原始值的轨道模型,但将处理后的值
我有验证程序:
validates_format_of :time, :with => /^[0-9]?[0-9]{1}[:][0-9]{2}$/, :allow_nil => true, :allow_blank => true, :message => 'format must be MM:SS'
虽然我想将它作为整数(秒)存储在数据库中,以便更容易地对该字段进行报告。
我覆盖了访问器:
def time=(new_time)
parts = new_time.split(':')
write_attribute(:time, (parts[0].to_i * 60) + parts[1].to_i)
end
def time
Time.at(read_attribute(:time).to_i).gmtime.strftime('%R:%S')
end
但它最终发送一个验证错误,因为时间属性是它之后得到由时间设定=方法的整数。
如何在数据库中存储持续时间值,但仍然以不同的格式(MM:SS)执行验证?