我的模型有以下:has_many, :through
关联:
小组模特:
has_many :group_users
has_many :users, :through => :group_users
用户型号:
has_many :group_users
has_many :groups, :before_add => :validates_group, :through => :group_users
GroupsUsers模型:
belongs_to :group
belongs_to :user
在groups_users
表中,我有一个额外的列,可以跟上用户状态(活动或非活动)。当用户从组中删除它时,我需要能够更新该列。如何在联接表上使用update_attributes
?
答案 0 :(得分:2)
这有点奇怪,所以只是为了确定 - 通常你会删除组中的用户删除持有连接的groups_user记录。
如果您希望该记录保持不变并且只是标记为非活动状态,那么您说该用户将继续显示在该组的用户集合中,反之亦然。
假设确实是你想要的 - 记录可以像任何其他记录一样更新。您可以从用户或组端进入,然后照常编辑。
例如,对于用户u,group g,groups_user gu
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