Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3更新联接表的属性(通过关联有许多)_Ruby On Rails 3_Activerecord_Has Many Through - Fatal编程技术网

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-我之所以要这样做,是为了帮助支持遗留系统,同时帮助支持从主数据库运行分析数据的系统。