0

私の声明..

Object.joins(:child_objects).where("child_objects.type != 'Magical!'").group(:id)

これでも、タイプが.に等しいObject'を返します。child_objectMagical!

どうすれば、child_objectタイプのMagicalを持たないオブジェクトのみを排他的に返すことができますか?

4

1 に答える 1

1

副選択(私は「クラシック」Product <= LineItem => Orderモデルセットを使用)とNOT IN:を使用できます。

jdoe_products = Product.joins(:orders).where(orders: {name: 'jdoe'})
Product.where('id NOT IN (%s)' % jdoe_products.select(:id).to_sql)

生産:

  Product Load (0.0ms)  SELECT "products".* FROM "products" WHERE (id NOT IN (SE
LECT "products"."id" FROM "products" INNER JOIN "line_items" ON "line_items"."pr
oduct_id" = "products"."id" INNER JOIN "orders" ON "orders"."id" = "line_items".
"order_id" WHERE "orders"."name" = 'jdoe'))
于 2012-12-18T23:05:58.830 に答える