3 回答

TA貢獻1852條經(jīng)驗 獲得超7個贊
區(qū)別在于回調(diào)。
將:delete_all直接在您的應用程序,并通過SQL刪除:
DELETE * FROM users where compagny_id = XXXX
使用:destroy,您所有孩子的實例化。因此,如果您無法銷毀它,或者每個銷毀了自己的:dependent,則可以調(diào)用其回調(diào)。

TA貢獻1725條經(jīng)驗 獲得超8個贊
在Rails的模型關(guān)聯(lián)上,您可以指定:dependent
選項,該選項可以采用以下三種形式之一:
:destroy/:destroy_all
通過調(diào)用它們的destroy
方法,關(guān)聯(lián)的對象與該對象一起被銷毀:delete/:delete_all
所有關(guān)聯(lián)的對象將立即銷毀,而無需調(diào)用其:destroy
方法:nullify
所有關(guān)聯(lián)對象的外鍵都設置為NULL
不調(diào)用其save
回調(diào)

TA貢獻1827條經(jīng)驗 獲得超4個贊
請參閱destroy刪除其關(guān)聯(lián)元素 ,其中delete_all可以從self表中刪除多個數(shù)據(jù),如下所示:DELETE * FROM table where field = 'xyz'
:取決于可能的選項:
控制銷毀所有者時關(guān)聯(lián)對象發(fā)生的情況。注意,這些被實現(xiàn)為回調(diào),并且Rails按順序執(zhí)行回調(diào)。因此,其他類似的回調(diào)可能會影響:depend行為,并且該:dependent
行為可能會影響其他回調(diào)。
:destroy
導致所有關(guān)聯(lián)的對象也被破壞。
:delete_all
使所有關(guān)聯(lián)的對象直接從數(shù)據(jù)庫中刪除(因此將不執(zhí)行回調(diào))。
:nullify
導致將外鍵設置為NULL。不執(zhí)行回調(diào)。
:restrict_with_exception
如果存在任何關(guān)聯(lián)的記錄,則會引發(fā)異常。
:restrict_with_error
如果存在任何關(guān)聯(lián)的對象,則會導致將錯誤添加到所有者。
如果與:through
選項一起使用,則聯(lián)接模型上的關(guān)聯(lián)必須是一個Emirates_to,并且被刪除的記錄是聯(lián)接記錄,而不是關(guān)聯(lián)的記錄。
- 3 回答
- 0 關(guān)注
- 640 瀏覽
添加回答
舉報