сопоставить все в отношении активных записей в запросе
Мне нужен запрос activerecord для сопоставления ВСЕХ элементов в массиве params.
скажем, пользователь has_many ролей. и у каждой роли есть имя.
когда я сдаю ['актер', 'продюсер', 'певец']. Я ожидаю, что запрос вернет мне пользователей со всеми этими тремя ролями или более.
Но моя реализация метода ниже вернула бы пользователей, у которых было бы по крайней мере одно имя роли, совпадающее с теми в переданном массиве
Мой текущий метод дает результаты, основанные на поиске любого из тегов, а не "MATCH ALL"
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 был возвращен из этого.
Заранее спасибо.