[英]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.