2

次の関連付けを持つモデル Person があります。

has_many :distributions

accepts_nested_attributes_for :distributions, :allow_destroy => true

validate :distributions_must_total_100

カスタム検証は現在、失敗すべきではない場合 (一部の検証が破棄対象としてマークされている場合) に失敗します。これは、Person およびそのディストリビューションが保存されます。

ActiveRecord::AutosaveAssociation.marked_for_destruction?バリデーター内で使用して、破棄されようとしているディストリビューションを無視したいと思います。

  1. どうすればその方法に到達できますか? Distribution (通常の Rails モデル) とそのクラスとの関係がどのようなものかはよくわかりません。

  2. これは恐ろしい汚れたハックですか?少し汚れているだけで、問題に対する最も正確な修正です。

デバッガーで ActiveRecord のソース コードを調べて、レコードが実際に破棄対象としてマークされていることを確認しました (つまり、Javascript またはフォーム ビルダーのバグではありません)。

4

1 に答える 1

0

marked_for_destruction?Distribution のインスタンスを呼び出すだけで、問題なく動作することがわかりました。

于 2009-08-28T13:47:31.403 に答える