Выберите продукты, которые имеют все параметры в столбце

У меня есть Product модель и ProductParamsгде я храню идентификаторы продуктов, столбец с некоторыми дополнительными параметрами (param) и тип параметра. Это будет выглядеть так:

id | type  | param
   |       |
1  | color | blue
1  | type  | hard
2  | color | blue
2  | type  | soft
.. | ..... | .....

Как получить только первый товар, когда я звоню с params = [blue, hard]?
Пока я думал о чем-то вроде Product.joins{product_params}.where{product_params.param.in params}.uniq, но я также получаю 2-й, потому что это blue тоже...

Я использую squeel gem для создания SQL-запросов, но ответ не обязательно должен быть в squeel.

РЕДАКТИРОВАТЬ
Я придумал решение, но это немного странно:

Product.joins{product_params}.where{product_params.param.in params}.group{id}.having{count(product_params.param) == 2}

Но было бы здорово, если бы был более изящный.

0 ответов

Другие вопросы по тегам