2011-02-16 34 views
11

比方说,我有一个用户拥有并且属于许多角色的关联。当我销毁用户时,连接表中的记录是否也会自动删除?或者我需要使用:dependent =>:destroy?如果我摧毁角色呢?连接表中的记录在HABTM关联中自动销毁?

class User < ActiveRecord::Base 
    has_and_belong_to_many :roles # need to use :dependent => :destroy to remove join record? 
end 

class Role < ActiveRecord::Base 
    has_and_belong_to_many :users # need to use :dependent => :destroy to remove join record? 
end 

回答

10

连接表条目已删除,但不删除角色或用户。您无法向has_and_belongs_to_many添加依赖销毁子句,但是如果您愿意,可以将它们添加到联合模型中的关系中。例如摧毁一个角色时相关的连接表项被删除,你会做到以下几点:

class RolesUser < ActiveRecord::Base 
    belongs_to :role, :dependent => :destroy 
    belongs_to :user 
end 
+1

我认为HABTM的要点之一是没有中间模型。因此,除非RolesUsers模型存在,否则这将不起作用。 – ipd 2011-05-20 20:56:25

0

确认 - 当您删除连接表中的一个用户或角色,所有的记录与用户/角色也将被删除