私は次のモデルを持っています
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 クエリがあります。