2011-07-30 10 views
1

ビューでチェックボックスをオンにすると、属性の存在を検証するモデルがあります。を使用して2つの条件を指定する場合

コードは次のようなものです:私はこれをやって行くのですか、このvalidation.Soの別の条件を持って探しています

validates_presence_of :shipping_first_name, :if => :receive_by_email_is_unchecked 

私の仮定は、このような何かをするだろうということです。

validates_presence_of :shipping_first_name, :if => {:receive_by_email_is_unchecked,:form_first_step_validation} 

私は、これはそれをやってかないの書き込み方法であるかどうかわかりませんよ?

何か提案がありがとうございます。

+1

最速の方法:それをロジックに入れてロジックを入れてください。 – jimworm

答えて

0

私はそれが動作すると思いますが、あなたは配列内のメソッド名を渡すことができ

1

ことを正確に行うために、独自のバリデータを作成することができvalidates_presence_of https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/presence.rb

のソースコードを見ていません:

validates_presence_of :shipping_first_name, :if => [:receive_by_email_is_unchecked, :form_first_step_validation] 

あなただけのコンディショニングの検証のための別の方法を定義したくない場合は別の方法としては、PROCを使用することができます。

validates_presence_of :shipping_first_name, :if => proc { !receive_by_email? && form_first_step_validation } 
0

ライアンベイツは、彼の最初のRailsの一つでこれをカバー構文は3 +

は、私はあなたがRailsの2.xの上で作業していると仮定レールVのため多少異なる場合がありますが、それはまだ有効だ http://railscasts.com/episodes/41-conditional-validations

キャストあなたが使用する構文はRails 3の構文ではありません Rails 3.xの構文は

validates :field_1, :field_2, :presence_of => true, :if =>です。ここでは、procまたは条件の配列を使用します。あなたが@jimwormと@MichałSzajbeからこの質問のために既に受け取った有効な例とコメントを見てください。

関連する問題