2

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

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

就像我说的那样,我一直在这个......我哪里出错了?提前感谢您的关注...

4

3 回答 3

2

我终于自己解决了这个问题。我缺少的部分是在 User 类中;由于 User 是 Member 的基础类,我需要这个:

belongs_to :groupmember, :foreign_key=>"member_id"

一旦到位,Rails 就能够找到它应该找到的所有内容,例如,

Group.find(1).members现在查找属于 ID 为 1 的组的所有用户。

于 2011-11-01T17:05:40.677 回答
1

假设你有一个名为 GroupMembers 的模型(你应该给它一个 has_many through 关联),你的 non-through 关联在 Group 和 Member 模型上应该是这样的:

has_many :group_members, :class_name => "GroupMembers"

出于某种原因,rails 没有将关联中的第二个模型复数化,所以你自己做吧。

于 2011-10-25T17:42:13.760 回答
1

有时它也可以简单到belongs_to :model需要单数而不是复数。我今天在我的关系上犯了这个错误。

于 2013-02-23T03:37:42.850 回答