使用validate_timeliness gem存在真实

时间:2017-05-15 05:23:49

标签: ruby-on-rails ruby

使用validate_timeliness是否需要内置方法?我希望我的生日场是必需的,当我分开存在时(像这样)

模型

# validates :birthday, 
    #   :presence => true,
    #   :on => :create

它将显示两个错误(第一个错误将是生日可以是空白而另一个是生日不是有效日期)。

模型

validates_date :birthday, :if :birthday,
                              :before => lambda { 18.years.ago },
                              :before_message => "must be at least 18 years old"
                              :end

问题:如何检查我的生日是不是零?

注意:我也试过这个

模型

  validates_date :birthday, :if birthday.present?,  # here's the line giving an error
                              :before => lambda { 18.years.ago },
                              :before_message => "must be at least 18 years old",
                              :end

但它给了我一个期待keyword_end

的错误

1 个答案:

答案 0 :(得分:1)

只需进行不同的验证:

validates :birthday, presence: true
validates_date :birthday, 
               allow_blank: true,
               before: lambda { 18.years.ago },
               before_message: 'must be at least 18 years old'

第二次验证允许空白值。如果根本没有birthday,这可以防止出现两个错误。第一次验证仍将确保存在birthday