2011-02-14 56 views
17
class Company 
    has_and_belongs_to_many :users 
end 

class User 
    has_and_belongs_to_many :companies 
end 

当我删除公司时,什么是最好的(推荐)方法来删除该公司的用户的关联? (我的意思是不实际的用户中,只有协会)rails 3 habtm只删除关联

回答

11

如果您打电话销毁而不是删除,关联会自动删除。

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:通过代替。我不同意。使用任何有意义的。如果协会没有内在属性,则使用HABTM。