2016-06-14 12 views
0

現在のCocoon/Nestedフォームはうまく動作します。 しかし、私はこの動作を変更したいと思います:Rails + Cocoon:ネストしたリソースを破棄するのではなく更新する

メインモデル

accepts_nested_attributes_for :varietals, :reject_if => lambda { |a| a[:grape_id].blank? && a[:id].blank? }, allow_destroy: true 

代わりのallow_destroyと品種のオブジェクトを削除し、私はそれが破壊されたときに0に、そのステータスフィールドを更新します。

これを行うには、この行の関数を呼び出すことは可能ですか?代わりに品種モデルを更新すべきですか?

ような何か:

varietal.update_attributes(:status => 0) 

1つのネストされたリソースが利用者によって削除されます。

ありがとうございました。

EDIT:データメインフォームの編集後のポストと助けるために、ネストされた品種の除去:

"varietals_attributes"=>{"0"=>{"grape_attributes"=>{"id"=>"168"}, "grape_id"=>"168", "percent"=>"20", "_destroy"=>"1", "id"=>"32709368-3496-47EA-A386-B1CCECA0BAEF"}}, 

答えて

0

私がcoocoonについて覚えているから、それだけでオブジェクトのハッシュに属性_destroyを追加し、だから私はあなたのvarietalモデルのコールバックでそれを処理し、allow_destroy: trueを削除することができると思います。

+0

varietalモデルにbefore_destroyなどのコールバックを追加すると、ステータスフィールドを変更できますが、その直後にオブジェクトが破棄されます。破壊後に更新されたデータを投稿するメッセージを編集しました。 –

+0

'allow_destroy'を削除すると、オブジェクトは破棄されません。 – PoloniculMov

+0

私はそれをしましたが、私のコールバックはvarietalsモデルでは呼び出されず(論理的に見えます)。 –

関連する問題