0

我有以下表格

Users
  - id
  - name

User_Skills
  - id
  - user_id
  - skill_id

Skills
  - id
  - name

我想让所有拥有一套精确技能的用户

User.join(:user_skills).where('user_skills.skill_id IN (1,2,3)')

这将返回所有具有 1 OR 2 OR 3 技能的用户。

如何获得唯一具有技能 1 AND 2 AND 3 的用户?

这不起作用

 User.join(:user_skills).where('user_skills.skill_id = 1 and user_skills.skill_id = 2 and user_skills.skill_id = 3')
4

1 回答 1

1

尝试这个:

class User < ActiveRecord::Base
  def with_skills(*ids)
    ids.flatten!
    join(:user_skills).where(user_skills: {skill_id: ids}).group(users: id).having('COUNT(DISTINCT user_skills.id) = ?', ids.length)
  end
end
于 2013-09-19T09:59:28.917 回答