1

我有一个具有User, Role,Group模型的 Rails 应用程序。

用户模型

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_usersgroups_users 用于映射他们的 id

所以这里每个用户可以有多个组和角色,

在我的榜样中只有三个条目,

admin有 id1trainerid2traineeid3

我想找到角色 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 回答