2011-09-15 9 views
2
class Foo < ActiveRecord::Base { 
starts_at datetime; 
ends_at datetime; 
} 

ends_atがstarts_atの後にあるかどうかを確認する方法を教えてください。2つの異種フィールドに基づいて妥当性チェックを設定することは可能ですか

+1

あなたは{必要はありません、また;:
あなたはしかし、ここでperform custom validations

、あなたはこのような何かを行うことができますすることができます。 Rubyはjavascriptではありません –

+0

重複した質問http://stackoverflow.com/questions/4545102/rails-3-how-to-validate-that-a-b-where-a-and-b-are-both-model-attributes – mark

答えて

3

validateマクロを使用し、カスタムメソッドを渡します。

class Foo < ActiveRecord::Base 

    validate :validate_timeline 

    protected 

    def validate_timeline 
     unless ends_at > starts_at 
     errors.add(:ends_at, "end date cannot precede start date") 
     end 
    end 
end 
1

これには事前定義された検証はありません。 }

class Foo < ActiveRecord::Base 
    validate :ends_after_starting 

    private 
    def ends_after_starting 
    if starts_at > ends_at 
     errors.add(:ends_at, "can't be before starts_at") 
    end 
    end 
end 
関連する問題