我有以下型号
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
在不使用条件时,有没有办法让AR在包含的表上进行LEFT OUTER JOIN?
我还尝试使用:join(:product_supplier_infos =&gt; [: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查询。