Rails 3.2 を使用しています。
製品モデルとバリアント モデルがあります。製品には多くのバリエーションがある場合があります。バリアントは多くの製品に属することができます。
Products モデルを検索して、次のような特定のバリアント数を持つ製品のみを検索したい (疑似コード):
Product.where("Product.variants.count == 0")
これをアクティブレコードでどのように行うのですか?
Rails 3.2 を使用しています。
製品モデルとバリアント モデルがあります。製品には多くのバリエーションがある場合があります。バリアントは多くの製品に属することができます。
Products モデルを検索して、次のような特定のバリアント数を持つ製品のみを検索したい (疑似コード):
Product.where("Product.variants.count == 0")
これをアクティブレコードでどのように行うのですか?
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 のソリューションを使用する必要があります。