2010-12-07 6 views
0

私は、ユーザーが有効な状態で3つ以上のレコードを持つことはできないというモデルにカスタム検証規則を持っています。 =>前:検証、コールバック

検証:not_over_active_limitは、

を作成し、私は、ユーザーの3つのアクティブレコードの1つを更新する必要がある場合に問題が発生します。私がrecord.updateを呼び出すと!またはrecord.save !,私は3つ以上のアクティブなレコードを持つことはできないという妥当性確認エラーがスローされます。しかし、私はbefore_createで保存するのではなく、検証を実行したいだけです!または更新する!

これを回避するにはsave(false)を呼び出すことができますが、そのようにしたくありません。

取り扱いに関するご提案はありますか?

答えて

0

あなたが探しているコードは動作しませんでした

validate :not_over_active_limit, :on => :create 

ない:beforeしかし:on

+0

です。しかし、これは:validate:not_over_active_limit、:on =>:create、if if => Proc.new {| r | r.new_record? } – keruilin

+1

これは、あなたが本質的に指定したprocは、作成時にのみ検証することを意味するので興味深いです。 – Chirantan

関連する問題