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
、あまりにも2位なblue
ので…
私は squeel gem を使用して SQL クエリを作成しますが、回答も squeel にある必要はありません。
編集
解決策を思いつきましたが、少し奇妙です:
Product.joins{product_params}.where{product_params.param.in params}.group{id}.having{count(product_params.param) == 2}
しかし、もっと優雅なものがあれば素晴らしいでしょう。