2011-02-16 118 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

確認 - 當您刪除連接表中的一個用戶或角色,所有的記錄與用戶/角色也將被刪除