2013-05-21 38 views
1

我有一个用户和角色的表。我正在使用一个有很多通过关系。我正在尝试创建一个查询,以查找具有数组中所有角色的用户。和Rails中的多个JOIN语句

ex。

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

我想你只是要求满足角色过滤标准的用户的唯一实例。如果是这样,那么这应该工作。

def self.filter(role_ids) 
    results = User.joins(:roles).where(roles: {id: role_ids}).uniq 
end