簡體   English   中英

Rails:依賴::銷毀 - 這是如何工作的?

[英]Rails: dependent: :destroy - How does this work?

在一個例子中,有一個所有者協會作為研究員:

class Owner < ActiveRecord::Base
  has_many :buildings, dependent: :destroy 
end

關系的另一面:

class Building < ActiveRecord::Base
  belongs_to :owner
end

如果我要刪除一個所有者,它是否也會破壞關聯的建築物? 如果刪除所有者,我如何指定依賴關系,以便所有者和主鍵不再與任何建築物相關聯?

你可能想要:nullify 有關has_many請參閱 Rails 文檔。

:dependent控制關聯對象的所有者被銷毀時會發生什么。 請注意,這些是作為回調實現的,Rails 會按順序執行回調。 因此,其他類似的回調可能會影響 :dependent 行為,而 :dependent 行為可能會影響其他回調。

:destroy會導致所有關聯的對象也被銷毀。

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

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

如果有任何關聯的記錄, :restrict_with_exception會導致引發異常。

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

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

  1. 是的,它將刪除關聯的建築物作為依賴:destroy指定。
  2. 如果要保留建築記錄,建議使用join表,這樣在刪除owner時,只刪除join表中的記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM