class Company
has_and_belongs_to_many :users
end
class User
has_and_belongs_to_many :companies
end
当我删除公司时,删除该公司用户的关联的最佳(推荐)方法是什么? (我的意思不是实际用户,只有关联)
答案 0 :(得分:18)
我更喜欢以下内容,因为它将模型逻辑保留在模型中。我不明白为什么ActiveRecord不会这样做。无论如何,在两个连接的模型中,我添加了以下回调。
before_destroy {|object| object.collection.clear}
所以在你的例子中:
class Company
has_and_belongs_to_many :users
before_destroy {|company| company.users.clear}
end
class User
has_and_belongs_to_many :companies
before_destroy {|user| user.companies.clear}
end
在关于在集合关联上执行级联删除的许多讨论中,许多人声明HABTM关联已经死亡并且建议使用has_many:through。我不同意。使用有意义的东西。如果关联没有内在属性,则使用HABTM。
答案 1 :(得分:17)
collection.delete
可以解决问题。
答案 2 :(得分:12)
如果您调用destroy而不是delete,则会自动删除关联。