gpt4 book ai didi

mysql - 如何从 Rails 中的 HABTM 连接表中删除条目?

转载 作者:可可西里 更新时间:2023-11-01 06:45:27 25 4
gpt4 key购买 nike

通过多次迭代测试,我注意到当这些模型的实例被删除时,代表两个模型之间 HABTM 关系的连接表不会删除条目。删除具有 HABTM 关系的模型实例时,我是否需要做一些特殊的事情?

最佳答案

经过仔细检查,HABTM 关系应该会删除连接表条目。但是,当您使用 delete 方法删除记录时,HABTM 关系或我在该解决方案的原始版本(参见帖子历史记录)中描述的关系都不会删除这些连接表条目。 ActiveRecord::Base#delete 不会触发任何回调,例如 HABTM 关系建立以从连接表中删除孤立条目的回调。相反,您应该使用 ActiveRecord::Base#destroy

您将不得不使用原始 SQL 来删除不需要的条目。如果您决定创建一个连接模型,您可以遍历连接模型中的条目,删除那些没有关联的条目。

示例:

class Foo < ActiveRecord::Base
has_many :foo_bars, :dependent => :destroy
has_many :bars, :through => :foo_bars
end

class FooBar < ActiveRecord::Base
belongs_to :foo
belongs_to :bar
end

class Bar < ActiveRecord::Base
has_many :foo_bars, :dependent => :destroy
has_many :foos, :through => :foo_bars
end

FooBar.all.each{|fb| fb.destroy? if fb.foo.nil? || fb.bar.nil? }

关于mysql - 如何从 Rails 中的 HABTM 连接表中删除条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1915229/

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