gpt4 book ai didi

ruby-on-rails - 依赖破坏不起作用

转载 作者:行者123 更新时间:2023-12-04 00:21:19 25 4
gpt4 key购买 nike

我正在尝试使用dependent: :destroy 没有成功。

让我们举一个简单的例子。我使用以下内容创建了一个简单的应用程序:

rails g model parent
rails g model child parent:references

将以下行添加到 parent.rb
has_many :children, dependent: :destroy

我在 rails 控制台(rails c)中进行以下测试
p = Parent.create!
c = Child.create!
c.parent = p
c.save
#check association
Child.first == Child.first.parent.children.first
p.delete
#This should return 0
Child.count == 0

Child.count 返回 1。

我缺少什么?

谢谢

最佳答案

4.2.2.4 :dependent

如果您设置了 :dependent选项:

  • :destroy ,当对象被销毁时,#destroy将在其关联对象上调用。
  • :delete ,当对象被销毁时,其所有关联的对象将直接从数据库中删除,无需调用它们的#destroy方法。

  • 根据您的设置,您必须执行 p.destroy .

    The :dependent option 可以有不同的值,指定如何完成删除。有关更多信息,请参阅有关不同特定关联类型的此选项的文档。如果没有给出选项,则行为是在销毁记录时不对关联的记录执行任何操作。

    对于 has_many , destroydestroy_all将始终调用 destroy被删除的记录的方法,以便运行回调。然而 deletedelete_all要么按照 :dependent 指定的策略进行删除选项,或者如果没有 :dependent给出选项,那么它将遵循默认策略。默认策略是 :nullify ( 将外键设置为零 ),除了 has_many :through ,其中默认策略是 delete_all (删除连接记录,而不运行它们的回调)。

    关于ruby-on-rails - 依赖破坏不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28581756/

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