Ruby on rails 3 Rails 3更新联接表的属性(通过关联有许多)
我有以下<代码>:通过<代码>关联我的模型有许多: 组模型:Ruby on rails 3 Rails 3更新联接表的属性(通过关联有许多),ruby-on-rails-3,activerecord,has-many-through,Ruby On Rails 3,Activerecord,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 belongs_to :group belongs_to :user GroupsUsers模
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
GroupsUsers模型:
has_many :group_users
has_many :groups, :before_add => :validates_group, :through => :group_users
belongs_to :group
belongs_to :user
在
groups\u users
表中,我有一个额外的列,用于跟踪用户状态(活动或非活动)。我需要能够在用户从组中自行删除该列时更新该列。如何在联接表上使用update\u attributes
?这有点奇怪,所以请确定--通常,您会通过删除保存连接的groups\u用户记录来从组中删除用户
如果您希望该记录持续存在并仅被标记为不活动,则表示该用户将继续显示在组的users集合中,反之亦然
假设这确实是您想要的——该记录与其他记录一样是可更新的。您可以从用户端或组端访问它,然后像往常一样进行编辑
例如,对于用户u,组g,组u用户gu
gu = g.groups_users.where('user_id = ?',u.id)
gu.update_attributes (:status => 'inactive')
另外,请注意,如果您这样做,可能会有很多次您只希望组中有活动用户,或者希望用户中有活动组。在这种情况下如何做到这一点,请参阅本文:谢谢@elc-我之所以要这样做,是为了帮助支持遗留系统,同时帮助支持从主数据库运行分析数据的系统。