我有以下表格
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和2和3的用户?
这不起作用
User.join(:user_skills).where('user_skills.skill_id = 1 and user_skills.skill_id = 2 and user_skills.skill_id = 3')
答案 0 :(得分: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