我一直在这附近。在这里看过类似的问题,但似乎我有一个额外的复杂因素;对他们有用的东西对我不起作用。
我有User,Group,GroupMember的模型和表格。组由用户拥有,但每个组可以具有任意数量的组成员,即其他用户。以下是我的协会:
在用户中,
has_many :groups
在小组中,
belongs_to :user
has_many :group_members
has_many :members, :class_name => "User", :through=>:group_members
在GroupMember中,
belongs_to :member, :class_name=>"User"
belongs_to :group
要获得组的成员,然后在groups_controller.rb中执行此操作:
@groupmembers = @group.group_members.all
但是,这会产生以下错误:
NameError in GroupsController#show
uninitialized constant Group::GroupMember
就像我说的那样,我一直在身边......我哪里出错了?提前谢谢你...
答案 0 :(得分:2)
我终于让我自己动手了。我缺少的部分是在User类中;既然User是会员的基础类,我需要这个:
belongs_to :groupmember, :foreign_key=>"member_id"
一旦到位,Rails就能找到应有的一切,例如,
Group.find(1).members
现在可以找到属于该组的所有用户,ID为1。
答案 1 :(得分:1)
假设您有一个名为GroupMembers的模型(您应该通过关联给出这是一个has_many),您的非直通关联应该在Group和Member模型上看起来像这样:
has_many:group_members,:class_name => “GroupMembers”
由于某种原因,rails并没有使关联中的第二个模型多元化,所以就这样做吧。
答案 2 :(得分:1)
有时它也可以像belongs_to :model
一样简单,而不是复数。我今天在关系上犯了这个错误。