修改Active Record对象的属性(如Task.update date: '2015-01-01'
)时,我想知道该值何时无效('2015-01-32'
或'whatever'
)。现在,activerecord
只是写nil
以防万一,我不得不说非常友好。以前的值丢失了。如果用户没有像日期那样输入任何内容,我想把它留在那里。
有没有更明智的方法来解决这个问题?
if ActiveRecord::Attribute.from_user('date', '2015-01-32', ActiveRecord::Type::Date.new).value
puts 'valid date'
end
答案 0 :(得分:1)
如果没有办法告诉activerecord
不丢弃值,并且没有公共接口来检查日期是否有效,那么最好的选项必须是使用validation:< / p>
class Task < ActiveRecord::Base
validates_date :date
end
答案 1 :(得分:0)
你可以尝试解析它,当它引发错误时它就无效了:
valid = Date.parse('2015-01-30').present? rescue false # true
valid = Date.parse('2015-01-32').present? rescue false # false