我在名为available_to
的模型中有两个字段available_from
和Hotel
。创建新的hotel
时,我们必须指定日期和时间!我想以这样的方式验证这两个字段:如果选择available_to
作为 2015年2月23日,则available_from
不应该 23 /二千〇一十四分之二
答案 0 :(得分:0)
最快的方法是在模型中创建custom validation method。
尝试更新Hotel
,如下所示:
class Hotel < ActiveRecord::Base
validate :validate_available_to if Proc.new { |h| h.available_from && h.available_to }
def validate_available_to
return if available_to > available_from
errors.add(:available_to, "Date should be at least #{available_from.next.strftime("%d/%m/%Y")}")
end
end
如何使用
h = Hotel.new
h.available_from = Date.parse("22/2/2014")
h.available_to = Date.parse("22/2/2014")
h.valid?
# => false
h.errors[:available_to]
# => ["Date should be at least 23/02/2014"]
但是,当您扩展验证规则并且代码变得复杂时,您应该考虑将从<{1}}移除验证到单独的验证类。
使用validates_with
查看ActiveModel::Validator
以获取更多信息。
希望有所帮助!