1

User、、モデルを持つRailsアプリケーションがありRoleます。Group

ユーザーモデル

has_and_belongs_to_many :roles
has_and_belongs_to_many :groups

ロールモデル

has_and_belongs_to_many :users

グループモデル

has_and_belongs_to_many :users

次のようなマッピングテーブルも作成しました。

roles_usersそしてgroups_users それらのIDをマッピングするため

したがって、ここでは各ユーザーが複数のグループと役割を持つことができます。

私のロールモデルでは、エントリは 3 つしかありません。

adminID付き1trainerID付き2traineeID付き3

ロール ID = 3 の特定のグループの下にあるすべてのユーザーを検索したいのですが、

私はこのようにしました、

@group = Group.find(2)
@users = @group.users

ここでは、グループの下にあるすべてのユーザーを取得していますid =2が、ロールで再度フィルター処理したいと考えていますid = 3。これを修正する方法。

どんな助けでも大歓迎です。

4

2 に答える 2

1

試す:

@group = Group.find(2)
@users = @group.users.joins(:roles).where("roles.id = ? && users.age = ?",3,30)
于 2013-01-30T05:33:44.140 に答える
0

これはうまくいくはずです@group.users.joins(:roles).where(roles: { id: 3 })

于 2013-01-30T05:32:18.187 に答える