2016-09-23 14 views
0

これらの値のいずれかが存在することをどのように確認できますか?2つのフィールド(XOR)のどちらかが1つ存在することをRailsバリデーションで確認

validates_presence_of :client_id, message: 'Please enter a value' 
    validates_presence_of :agency_id, message: 'Please enter a value' 

私はレールガイドを見ましたが、私は条件付きバリデーションを使用する必要があると思いますが、私はちょっと立ち往生しています。

答えて

3

あなたは、あなたがない限り構文を使用する場合は、よりおよそvalidation messages

+0

どのようにこの構文でメッセージを保持できますか? – Spance

+0

私は – davidhu2000

+0

からメッセージ部分を追加するだけでいいと思います。私は – Spance

0

を読むことができますが、エラーメッセージを含めたい場合は、あなたが

validates :client_id, presence: { message: "Must have a value" }, unless: :agency_id 

を行うことができ、この

validates :client_id, presence: true, unless: :agency_id 
validates :agency_id, presence: true, unless: :client_id 

試してみてください2つのエラーが発生します.1つはclient_idのとき、もう1つはagency_idの両方がNilのときです。

エラーが1つだけ必要な場合は、カスタムメソッドが必要です。 Guides: ActiveRecord Validation

validate :client_or_agency 

def client_or_agency 
    errors.add(:client_id, "Either Client or Agency needs a value") unless client_id.present? || agency_id.present? 
end 
関連する問題