允许空白日期通过验证并保存在数据库中?

时间:2013-05-24 04:41:35

标签: ruby-on-rails ruby-on-rails-3 mongoid activemodel mongoid3

我有一个Rails应用程序,我使用Mongoid驱动程序映射到我的Mongodb数据库。如果他们不愿意,我想允许用户不指定他们的出生日期。如果他们确实指定了我希望验证适用年份的日期。

我的模型中有以下代码:

field :date_of_birth, type: Date

validates_date :date_of_birth, :before => lambda { 6.years.ago }, :before_message => 'must be at least 6 years old',
                 :on_or_after => lambda { 70.years.ago }, :on_or_after_message => 'please enter a valid date of birth'

如何允许用户保存通过验证并保存到数据库的空白日期。当我使用当前代码传递空白日期时,我收到以下错误:

缺少出生日期翻译:attributes.date_of_birth.invalid_date

1 个答案:

答案 0 :(得分:3)

像这样:

validates_date :date_of_birth,
  :unless => 'date_of_birth.blank?',
  :before => lambda { 6.years.ago },
  :before_message => 'must be at least 6 years old',
  :on_or_after => lambda { 70.years.ago },
  :on_or_after_message => 'please enter a valid date of birth'

你可能不应该像这样阻止70岁以上的人:)