我有一个用户和角色表。我正在使用很多关系。我正在尝试创建一个查询,该查询将查找具有数组中所有角色的用户。
离。
role_ids = [2, 4, 6]
User.filter(role_ids) would return all users that have roles with ids 2, 4, 6.
这是我到目前为止所做的。
def self.filter(role_ids)
results = User.joins(:roles).where(roles: {id: role_ids} )
end
此语句的问题是它返回在role_ids中至少具有一个角色的所有用户。
如何使这句话给我一个交集,而不是一个联盟?
答案 0 :(得分:0)
我认为您只要求符合角色过滤条件的用户的唯一实例。如果是这样,那么这应该有用。
def self.filter(role_ids)
results = User.joins(:roles).where(roles: {id: role_ids} ).uniq
end