连接表中的记录在HABTM关联中自动销毁?
问题描述:
比方说,我有一个用户拥有并且属于许多角色的关联。当我销毁用户时,连接表中的记录是否也会自动删除?或者我需要使用: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
答
连接表条目已删除,但不删除角色或用户。您无法向has_and_belongs_to_many添加依赖销毁子句,但是如果您愿意,可以将它们添加到联合模型中的关系中。例如摧毁一个角色时相关的连接表项被删除,你会做到以下几点:
class RolesUser < ActiveRecord::Base
belongs_to :role, :dependent => :destroy
belongs_to :user
end
答
确认 - 当您删除连接表中的一个用户或角色,所有的记录与用户/角色也将被删除
我认为HABTM的要点之一是没有中间模型。因此,除非RolesUsers模型存在,否则这将不起作用。 – ipd 2011-05-20 20:56:25