【问题标题】:How can I validate a DateTime field如何验证 DateTime 字段
【发布时间】:2015-03-23 06:03:14
【问题描述】:

我在一个名为Hotel 的模型中有两个字段available_toavailable_from。创建新的hotel 时,我们必须指定日期和时间!我想验证这两个字段,如果选择 available_to 作为 23/2/2015 ,则 available_from 不应该是 23/2/2014。

【问题讨论】:

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


    【解决方案1】:

    最快的方法是在模型本身内创建一个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_withActiveModel::Validator 了解更多信息。

    希望有帮助!

    【讨论】:

    • 我的荣幸!如果它对您有用,请不要忘记将答案标记为正确!祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2022-01-24
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2023-03-25
    • 2012-06-14
    相关资源
    最近更新 更多