我有以下型号
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?
我还尝试使用 :joins(:product_supplier_infos => [:supplier, :product_supplier_info_packings]) 最终得到我不想要的 CROSS JOIN 和 .joins(["LEFT OUTER JOIN product_supplier_infos...", "LEFT OUTER加入供应商...", "LEFT OUTER JOIN product_supplier_info_packings ..."]) 但它没有任何效果。我仍然有 4 个 SQL 查询。