如何验证 DateTime 字段

How can I validate a DateTime field

我在名为 Hotel 的模型中有两个字段 available_toavailable_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 了解更多。

希望对您有所帮助!