2

私はこれを何度も繰り返してきました。ここで同様の質問を見てきましたが、さらに複雑な要因があるようです。彼らにとってうまくいったことは、私にはうまくいきません。

User、Group、GroupMember のモデルとテーブルがあります。グループはユーザーによって所有されますが、各グループには任意の数のグループ メンバー (つまり、他のユーザー) を含めることができます。ここに私の協会があります:

ユーザーでは、

has_many :groups

グループで、

belongs_to :user
has_many :group_members 
has_many :members, :class_name => "User", :through=>:group_members

グループメンバーでは、

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 スルー アソシエーションであると仮定する必要があります)、非スルー アソシエーションは Group モデルと Member モデルの両方で次のようになります。

has_many :group_members, :class_name => "GroupMembers"

なんらかの理由で、Rails は関連付けの 2 番目のモデルを複数形にしないので、自分で行ってください。

于 2011-10-25T17:42:13.760 に答える
1

belongs_to :model場合によっては、複数形ではなく単数形にする必要があるという単純な場合もあります。今日、私は自分の関係でこの間違いを犯しました。

于 2013-02-23T03:37:42.850 に答える