如何验证DateTime字段

时间:2015-03-23 06:03:15

标签: ruby ruby-on-rails-3 validation rails-admin

我在名为available_to的模型中有两个字段available_fromHotel。创建新的hotel时,我们必须指定日期和时间!我想以这样的方式验证这两个字段:如果选择available_to作为 2015年2月23日,则available_from不应该 23 /二千〇一十四分之二

1 个答案:

答案 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以获取更多信息。

希望有所帮助!