我有一个Product
模型ProductParams
,并且我在其中存储产品 ID、带有一些附加参数(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
,但我也得到了第二名,因为它blue
太......
我使用 squeel gem 来构造 SQL 查询,但答案也不必在 squeel 中。
编辑
我想出了解决方案,但这有点奇怪:
Product.joins{product_params}.where{product_params.param.in params}.group{id}.having{count(product_params.param) == 2}
但如果有更优雅的,那就太好了。