2016-06-14 85 views
0

我目前的Cocoon /嵌套窗體工作得很好。 不過,我想改變這種行爲: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) 

當一個嵌套的資源被用戶刪除。

謝謝。

編輯:主窗體的編輯後的數據後並嵌套品種的去除,以幫助:

"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

如果我在品種模型中添加一個像before_destroy這樣的回調函數,我可以改變狀態字段,但它會在剛剛破壞對象之後,不是嗎?我編輯了我的消息,發佈了銷燬後更新的數據。 –

+0

如果您刪除'allow_destroy',它不會將對象標記爲銷燬。 – PoloniculMov

+0

我做到了,但我的回調沒有在品種模型中調用(似乎是合乎邏輯的)。 –