我有两个表,users和groups。一个用户可以属于许多组。一个组可以有很多用户。
因此,我使用连接表 groups_users 在用户和组之间创建了have_and_belongs_to_many关系。这一切都按预期工作。
我还想做的是为每个用户指定一个 ACTIVE 组。如果不是我已经定义的 habtm 关系,我会在 users 中为活动组创建一个列“group_id”,然后我会定义模型之间的一对多关系,如下所示:
class User < ActiveRecord::Base
belongs_to :group
end
class Group < ActiveRecord::Base
has_many :users
end
这没有用。我无法访问像“@user.group.name”这样的组属性。我怀疑我通过指定两个关系对 Rails 提出了太多要求。
所以我有三个问题。
- 如果将这两种关系结合起来会混淆 Active Record ,我可以很容易地理解。是这样吗?
- 如果是这样,您将如何实现这些关系?现在我只是手动使用 group_id,但感觉很乱。
- 无论我是使用 Active Record 魔法还是手动设置活动组,使用第一个 habtm 关系,用户的活动组都可能在他们所属的组之外。关于如何在活动组必须是用户所属的组的约束下实现这一点的任何想法?
感谢您的任何见解。我已经进入 Rails 学习曲线几周了,我认为深入了解这个小问题会加深我对模型和表关系的理解。