未初始化的常量错误:无法获得此has_many:通过正确

时间:2011-10-17 20:25:51

标签: activerecord ruby-on-rails-3.1 model-associations nameerror

我一直在这附近。在这里看过类似的问题,但似乎我有一个额外的复杂因素;对他们有用的东西对我不起作用。

我有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

就像我说的那样,我一直在身边......我哪里出错了?提前谢谢你...

3 个答案:

答案 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一样简单,而不是复数。我今天在关系上犯了这个错误。