0

我有一个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}

但如果有更优雅的,那就太好了。

4

0 回答 0