2012-06-19 84 views
3

我有以下:has_many, :through協會對我的模型:Rails 3的更新屬性的連接表(有很多,通過協會)

組型號:

has_many :group_users 
has_many :users, :through => :group_users 

用戶型號:

has_many :group_users 
has_many :groups, :before_add => :validates_group, :through => :group_users 

羣組用戶型號:

belongs_to :group 
belongs_to :user 

groups_users表中,我有一個跟上用戶狀態(活動或非活動狀態)的附加列。當用戶從組中刪除他們時,我需要能夠更新該列。你如何在連接表上使用update_attributes

回答

2

有一些有點奇怪的事情,所以只是爲了確定 - 通常你會通過刪除持有連接的groups_user記錄從組中刪除用戶。

如果您希望該記錄保留並僅標記爲非活動狀態,則表示用戶將繼續顯示在該組的用戶集合中,反之亦然。

假設這確實是你想要的 - 該記錄是可更新的像其他任何。您可以從用戶或組端進入,然後照常編輯。

例如,對於用戶u,G團,groups_user區

gu = g.groups_users.where('user_id = ?',u.id) 
gu.update_attributes (:status => 'inactive') 

也請注意,如果你這樣做有可能會是很多時候你想只爲一組的活躍用戶,或用戶的活動組。在這種情況下看到這篇文章是如何做到這一點的:Rails has_many :through Find by Extra Attributes in Join Model

+0

Thanks @elc - 我不得不這樣做的原因是幫助支持遺留系統,同時幫助支持一個系統,該系統運行主數據庫的分析數據。 – dennismonsewicz