Activerecord 未初始化常量错误:无法获取此已通过正确的

Activerecord 未初始化常量错误:无法获取此已通过正确的,activerecord,ruby-on-rails-3.1,model-associations,nameerror,Activerecord,Ruby On Rails 3.1,Model Associations,Nameerror,我一直在和这个打交道。我在这里见过类似的问题,但似乎我有一个额外的复杂因素;对他们有效的东西对我无效 我有用户、组、组成员的模型和表格。一个组由一个用户拥有,但每个组可以有任意数量的组成员,即其他用户。以下是我的联想: 在用户方面 has_many :groups 在小组中 belongs_to :user has_many :group_members has_many :members, :class_name => "User", :through=>:group_memb

我一直在和这个打交道。我在这里见过类似的问题,但似乎我有一个额外的复杂因素;对他们有效的东西对我无效

我有用户、组、组成员的模型和表格。一个组由一个用户拥有,但每个组可以有任意数量的组成员,即其他用户。以下是我的联想:

在用户方面

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

就像我说的,我一直在和这个。。。我哪里出错了?提前感谢您查看…

假设您有一个名为GroupMembers的模型,您应该考虑到这是一个多通关联,您的非通关联在Group和Member模型上都应该是这样的:

拥有多个:组成员,:class\u name=>GroupMembers


出于某种原因,rails没有将协会中的第二个模型多元化,所以自己动手吧。

我终于自己解决了这个问题。我缺少的部分在用户类中;因为User是Member的底层类,所以我需要:

属于:groupmember,:foreign\u key=>member\u id

一旦安装到位,Rails就能够找到它应该找到的所有东西,例如


Group.find1.members现在可以查找ID为1的组中的所有用户。

有时它也可以像所属对象一样简单:模型需要是单数而不是复数。我今天在我的关系上犯了这个错误

谢谢你的回答。不幸的是,在我尝试了你的建议之后,它仍然会产生同样的错误。一些要点:1我没有会员模式;它实际上是用户的别名。2我的直通关联模型命名为GroupMember,末尾没有复数s。。。我改变了你的建议,用GroupMember代替GroupMembers。仍然没有乐趣。现在我已经能够通过在我的Groupshow操作中执行以下操作来解决这个问题,其中我需要一个组中所有成员的实例:'@groupmembers=group.find\u by_sqlselect*from groups g join group\u members gm on gm.group\u id=g.id join users u on u.id=gm.member\u id其中g.id={@group.id}'