我有一個模型,有很多孩子。我設置/這樣除去孩子:爲什麼ActiveRecord has_many使用delete_all而不是destroy_all?
mymodel.children_ids = [1,2,3]
mymodel.save #add the children
mymodel.children_ids = [1]
mymodel.save #remove children 2,3
這只是正常的,但我才意識到,沒有任何回調(即after_destroy
)都沒有被稱爲對孩子的模型。
經過一番挖掘,結果發現delete_all
函數正在執行中,而不是destroy_all
。正如文檔正確指出的那樣,delete_all
函數不會觸發回調,所以無論如何改變這種行爲?
謝謝。
這個解決方案在Rails 3.1.1中還能工作嗎?這不是我的工作,得到錯誤數量的參數(1爲2)' – amree
我不確定...我計劃在幾個月內將我的應用升級到Rails 3.1。我想那時我必須弄清楚這一點。 – gmoniey