gpt4 book ai didi

ruby-on-rails - Rails : dependent: :destroy - How does this work?

转载 作者:行者123 更新时间:2023-12-04 05:34:30 24 4
gpt4 key购买 nike

在一个例子中,有一个所有者协会作为研究员:

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 ,并且被删除的记录是连接记录,而不是关联记录。

关于ruby-on-rails - Rails : dependent: :destroy - How does this work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com