我的模型有以下 :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
?
最佳答案
这有点奇怪,所以只是为了确定——通常您会通过删除保存连接的 groups_user 记录来从组中删除用户。
如果您希望该记录持续存在并且只是被标记为不活动,那么您就是说该用户将继续出现在该组的用户集合中,反之亦然。
假设这确实是您想要的——记录可以像任何其他记录一样更新。您可以从用户端或组端访问它,然后像往常一样进行编辑。
例如,对于用户 u,组 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
关于ruby-on-rails-3 - Rails 3 更新连接表的属性(有很多,通过关联),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11109049/