我需要一个 activerecord 查询来匹配 params 数组中的所有项目。
假设用户 has_many 角色。每个角色都有一个名字。
当我通过['演员','制片人','歌手']。我希望查询能够向我返回具有所有这三个角色或更多角色的用户。
但是我下面的方法实现将返回具有至少一个角色名称与传递的数组中的角色名称匹配的用户
我目前的方法是根据找到任何标签而不是“匹配所有”来给出结果
class User < ActiveRecord::Base
has_many :roles
def self.filter_by_roles(roles)
User.joins(:roles).includes(:roles).where(:roles => {:name => roles})
end
end
我不想在查询检查返回的结果对象是否包含所有角色之后执行任何数组操作。这是因为我需要从中返回 Active Record Relation 对象。
提前致谢。