Activerecord Rails Active Record能否同时理解两个表之间的两个并发关系?

Activerecord Rails Active Record能否同时理解两个表之间的两个并发关系?,activerecord,table-relationships,Activerecord,Table Relationships,我有两个表,用户和组。一个用户可以属于多个组。一个组可以有多个用户 因此,我使用联接表groups\u users在用户和组之间创建了一个have\u和\u belient\u to\u many关系。这一切都按预期进行 我还想为每个用户指定一个活动组。如果不是因为我已经定义的habtm关系,我将在活动组的用户中创建一列“group_id”,然后我将定义模型之间的一对多关系,如下所示: class User < ActiveRecord::Base belongs_to :group

我有两个表,用户。一个用户可以属于多个组。一个组可以有多个用户

因此,我使用联接表groups\u users在用户和组之间创建了一个have\u和\u belient\u to\u many关系。这一切都按预期进行

我还想为每个用户指定一个活动组。如果不是因为我已经定义的habtm关系,我将在活动组的用户中创建一列“group_id”,然后我将定义模型之间的一对多关系,如下所示:

class User < ActiveRecord::Base
  belongs_to :group
end

class Group < ActiveRecord::Base
  has_many :users
end
class用户
这不管用。我无法访问诸如“@user.group.name”之类的组属性。我怀疑通过指定两个关系,我对Rails的要求太高了

所以我有三个问题

  • 如果将这两种关系结合起来会混淆Active Record,我很容易理解。是这样吗
  • 如果是,您将如何实现这些关系?现在我只是手动使用组id,但感觉很混乱
  • 无论我使用的是Active Record magic还是手动设置活动组,用户的活动组都有可能在使用第一个habtm关系所属的组之外。在活动组必须是用户所属的组的约束下,如何实现这一点

  • 谢谢你的见解。我已经进入Rails学习阶段几周了,我认为弄清这个小问题的真相将大大加深我对模型和表关系的理解。

    Greg-我以前做过这件事,类似于你的建议。我使用了“primary\u group”而不是“group”,并将外键设置为“primary\u group\u id”,并且:class\u name=>“group”

    我不经常使用has_和would_to_,所以我不知道这是否会导致问题,但我认为不会,至少在用户模型中不会。您没有#group方法,因此设置“属于”应该可以。我不知道你是否一定要在组中有一个has_-many:users方法,但你可能无论如何都不需要它。这肯定会与habtm创建的“用户”方法发生冲突。如果确实需要,请尝试拥有多个:primary\u用户并设置:foreign\u key=>:primary\u group\u id


    只是一些想法。你应该能够做你现在正在做的事情,所以不确定失败的是什么。

    谢谢Swards。现在一切正常,所以我想我在某处遇到了另一个bug。我已经采取了你的方法,重新命名协会(primary_group),以使事情更加清楚。