如何验证 DateTime 字段
How can I validate a DateTime field
我在名为 Hotel
的模型中有两个字段 available_to
和 available_from
。创建新 hotel
时,我们必须指定日期和时间!我想验证这两个字段,如果选择 available_to
作为 23/2/2015 ,则 available_from
不应该是 23/2/2014.
最快的方法是在模型本身中创建 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"]
但是,当您扩展验证规则并且代码变得复杂时,您应该考虑 从 Model
中移除 验证以将验证 类.
检查 validates_with
, with ActiveModel::Validator
了解更多。
希望对您有所帮助!
我在名为 Hotel
的模型中有两个字段 available_to
和 available_from
。创建新 hotel
时,我们必须指定日期和时间!我想验证这两个字段,如果选择 available_to
作为 23/2/2015 ,则 available_from
不应该是 23/2/2014.
最快的方法是在模型本身中创建 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"]
但是,当您扩展验证规则并且代码变得复杂时,您应该考虑 从 Model
中移除 验证以将验证 类.
检查 validates_with
, with ActiveModel::Validator
了解更多。
希望对您有所帮助!