3

Rails 3.2 を使用しています。

製品モデルとバリアント モデルがあります。製品には多くのバリエーションがある場合があります。バリアントは多くの製品に属することができます。

Products モデルを検索して、次のような特定のバリアント数を持つ製品のみを検索したい (疑似コード):

Product.where("Product.variants.count == 0")

これをアクティブレコードでどのように行うのですか?

4

4 に答える 4

1

0 以外の特定のバリエーションを持つ製品をプルしたい場合は、次のような方法でそれを行うことができます (確かにテストされていません)。

Product.select('product.id, product.attr1_of_interest, ... product.attrN_of_interest, variant.id, COUNT(*)')
       .joins('variants ON product.id = variants.product_id')
       .group('product.id, product.attr1_of_interest, ... product.attrN_of_interest, variant.id')
       .having('COUNT(*) = 5')  #(or whatever number manipulation you want to do here) 

0 個の製品を許可する場合は、上記の Sean のソリューションを使用する必要があります。

于 2013-05-14T05:12:37.130 に答える