我有一个 Rails 应用程序,它有User
、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
我还创建了一个映射表,例如,
用于映射其 ID 的roles_users
和groups_users
所以这里每个用户都可以有多个组和角色,
在我的榜样中,只有三个条目,
admin
ID 1
, trainer
ID 2
, 具有 ID 3
trainee
我想查找角色 ID = 3 的特定组下的所有用户,
我这样做过,
@group = Group.find(2)
@users = @group.users
在这里,我正在组id =2
下获取所有用户,但我想使用角色id = 3
再次过滤它。如何解决这个问题。
任何帮助,不胜感激。
尝试:
@group = Group.find(2)
@users = @group.users.joins(:roles).where("roles.id = ? && users.age = ?",3,30)
这
应该@group.users.joins(:roles).where(roles: { id: 3 })