0

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

4

1 に答える 1

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歳以上の人をそのようにブロックすべきではありません:)

于 2013-05-24T04:44:50.273 に答える