Выберите продукты, которые имеют все параметры в столбце
У меня есть 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}
Но было бы здорово, если бы был более изящный.