これは私のモデルクラスです:
class Availability < ActiveRecord::Base
attr_accessible :beginning_date, :end_date
validates :beginning_date, :end_date :presence => true
# custom validators
validate :dates_cant_be_in_the_past
def dates_cant_be_in_the_past
if Date.parse(beginning_date) < Date.today
errors.add(:beginning_date, "cant be in the past")
end
if Date.parse(end_date) < Date.today
errors.add(:end_date, "cant be in the past")
end
end
end
ここで、次の 2 つのことが発生するはずです。最初に、beginning_date
およびend_date
属性の存在を検証し、次にdates_cant_be_in_the_past
バリデーターを実行します。残念ながら、このアプローチは機能しません。フィールドを空のままにするDate.parse
と、引数が明らかに空であるため、メソッドは例外をスローします。
デフォルトおよびカスタム検証の順序を定義することは可能ですか? または、プレゼンスバリデーターを自分で実装する必要があるので、次のようにします。
validate :dates_cant_be_blank, :dates_cant_be_in_the_past
ガイドには少なくとも次のように書かれています。
各クラス メソッドに複数のシンボルを渡すことができ、それぞれの検証が登録された順序で実行されます。
少し早いですがお礼を