rails 3 habtm只删除关联

class Company has_and_belongs_to_many :users end class User has_and_belongs_to_many :companies end 

当我删除一家公司时,删除该公司用户的关联的最佳(推荐)方法是什么? (我的意思不是实际用户,只有关联)

我更喜欢以下内容,因为它将模型逻辑保留在模型中。 我不明白为什么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。

如果您调用destroy而不是delete,则会自动删除关联。