【问题标题】:AND multiple JOIN statements in RailsRails 中的 AND 多个 JOIN 语句
【发布时间】:2013-05-21 17:50:15
【问题描述】:

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

例如

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中拥有一个角色的所有用户。

如何让这个语句给我一个交集,而不是一个联合?

【问题讨论】:

    标签: sql ruby-on-rails activerecord join


    【解决方案1】:

    我认为您只要求满足角色过滤条件的唯一用户实例。如果是这样,那么这应该可以工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 2013-06-11
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多