[英]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
,被刪除的記錄是連接記錄,而不是關聯記錄。
:destroy
指定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.