1

私は次のモデルを持っています

class Product < ActiveRecord::Base
end

class Supplier < ActiveRecord::Base
end

class ProductSupplierInfo < ActiveRecord::Base
  has_many :product_supplier_info_packings, :inverse_of => :product_supplier_info
  belongs_to :supplier
end

class ProductSupplierInfoPacking < ActiveRecord::Base
  belongs_to :product_supplier_info, :inverse_of => :product_supplier_info_packings
end

そして、私は次のクエリを実行しています:

rows = Product.includes(:product_supplier_infos => [:supplier, :product_supplier_info_packings])

現在、4 つの SQL クエリを作成しています。

次の条件を追加すると

.where("product_supplier_infos.name = ?", "foobar")

結合されたすべてのテーブルで LEFT OUTER JOIN を作成します

条件を使用しない場合に、含まれているテーブルで LEFT OUTER JOIN を作成するように AR を作成する方法はありますか?

また、 :joins(:product_supplier_infos => [:supplier, :product_supplier_info_packings]) を使用しようとしましたが、これは、望ましくない CROSS JOIN と .joins(["LEFT OUTER JOIN product_supplier_infos...", "LEFT OUTER JOIN サプライヤー... "、"LEFT OUTER JOIN product_supplier_info_packings ..."]) しかし、効果はありませんでした。まだ 4 つの SQL クエリがあります。

4

0 に答える 0