我有两个表,用户和组。用户可以属于许多组。一个组可以有很多用户。
因此,我使用连接表groups_users在用户和组之间创建了 have_and_belongs_to_many 关系。这一切都按预期工作。
我还想做的是为每个用户指定一个ACTIVE组。如果不是我已经定义的habtm关系,我会在活动组的用户中创建一个“group_id”列,然后我将在模型之间定义一对多关系,如下所示:
class User < ActiveRecord::Base
belongs_to :group
end
class Group < ActiveRecord::Base
has_many :users
end
这不起作用。我无法访问“@ user.group.name”之类的组属性。我怀疑我通过指定两个关系来问太多Rails。
所以我有三个问题。
感谢您的任何见解。我进入Rails学习曲线需要几周时间,我认为深入了解这个小问题会加深我对模型和表格关系的理解。
答案 0 :(得分:1)
我不经常使用has_and_belongs_to_many所以我不知道这是否会导致问题,但我不这么认为 - 至少不是用户模型。你没有#group方法,所以设置belongs_to应该没问题。我不知道你是否绝对必须在组上有一个has_many:users方法,但无论如何你可能都不需要它。这肯定会导致与habtm创建的'用户'方法发生冲突。如果确实需要,请尝试has_many:primary_users并设置:foreign_key =&gt; :primary_group_id
只是一些想法。你应该能够做你现在正在做的事情,所以不确定失败的是什么。