2009-08-28 6 views
2

は、私は、次の関連を持つモデル、人、持っている: - 検証の一部が破壊のためにマークされているとき - それはいけないアクセス方法ActiveRecord :: AutosaveAssociation.marked_for_destruction?親モデルの中から

has_many :distributions 

accepts_nested_attributes_for :distributions, :allow_destroy => true 

validate :distributions_must_total_100 

カスタム検証が現在失敗を理由Personとそのディストリビューションが保存される前に、それらは属性 "distribution"(メモリ内に、DBの内容を決して気にせず)に表示されます。

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

  1. どのようにすれば実現できますか? Distributionの関係(あなたの通常のRailsモデル)がそのクラスにどのような関係にあるのかはよく分かりません。

  2. これは恐ろしい汚れたハックですか?それはちょっと汚いと感じるだけで、問題の最も正確な修正です。

私はレコードが実際に破壊(すなわちないのJavascriptまたはフォームビルダのバグ)のためにマークされていることを確認するために、デバッガでActiveRecordのソースコードをステップ実行をしました。

答えて

0

あなたはDistributionのインスタンスでmarked_for_destruction?と呼ぶことができますが、うまくいきます。

関連する問題