ruby-on-rails-3 - Rails 3 更新连接表的属性(有很多,通过关联)

标签 ruby-on-rails-3 activerecord has-many-through

我的模型有以下 :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/

相关文章:

ruby-on-rails-3 - 如何在 Ruby on Rails 中使用设计身份验证进行确认

ruby-on-rails - 更新范围内的关系?

ruby-on-rails - 避免在 has_many :through 中重复的 Rails 习惯用法

php - 更新标签列表 - 或者更新 has_many 关系

ruby-on-rails - Eager Loading with "has many through"—— 我需要 Arel 吗?

javascript - 如何将 Rails 变量传递到必须动态刷新(每 60 秒)的 View 的 CSS?

ruby-on-rails - only_provides 的 Rails 替代品

ruby-on-rails - 如何在 Rails 中拥有基于非查询的范围

php - Laravel Eloquent hasManyThrough 关系 + 分页

ruby-on-rails-3 - RSpec:最简单的测试失败并出现错误:预期 block 返回真值