亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Rails:depend =>:destroy VS:depend =>:delete_all

Rails:depend =>:destroy VS:depend =>:delete_all

ABOUTYOU 2019-12-09 14:57:00
在導軌中的描述如下:如果對象與關聯,則將另外銷毀;如果與關聯:dependent => :destroy,則將其刪除。:dependent => :delete_all是的,很酷。但是被銷毀和被刪除有什么區別?我都嘗試過,似乎做同樣的事情。
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

區別在于回調。


將:delete_all直接在您的應用程序,并通過SQL刪除:


DELETE * FROM users where compagny_id = XXXX

使用:destroy,您所有孩子的實例化。因此,如果您無法銷毀它,或者每個銷毀了自己的:dependent,則可以調用其回調。


查看完整回答
反對 回復 2019-12-09
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

在Rails的模型關聯上,您可以指定:dependent選項,該選項可以采用以下三種形式之一:

  • :destroy/:destroy_all通過調用它們的destroy方法,關聯的對象與該對象一起被銷毀

  • :delete/:delete_all所有關聯的對象將立即銷毀,而無需調用其:destroy方法

  • :nullify所有關聯對象的外鍵都設置為NULL不調用其save回調


查看完整回答
反對 回復 2019-12-09
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

請參閱destroy刪除其關聯元素 ,其中delete_all可以從self表中刪除多個數據,如下所示DELETE * FROM table where field = 'xyz'

:取決于可能的選項:

控制銷毀所有者時關聯對象發生的情況。注意,這些被實現為回調,并且Rails按順序執行回調。因此,其他類似的回調可能會影響:depend行為,并且該:dependent行為可能會影響其他回調。

:destroy 導致所有關聯的對象也被破壞。

:delete_all 使所有關聯的對象直接從數據庫中刪除(因此將不執行回調)。

:nullify導致將外鍵設置為NULL。不執行回調。

:restrict_with_exception 如果存在任何關聯的記錄,則會引發異常。

:restrict_with_error 如果存在任何關聯的對象,則會導致將錯誤添加到所有者。

如果與:through選項一起使用,則聯接模型上的關聯必須是一個Emirates_to,并且被刪除的記錄是聯接記錄,而不是關聯的記錄。


查看完整回答
反對 回復 2019-12-09
  • 3 回答
  • 0 關注
  • 632 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號