无条件地在Rails ActiveRecord中左键连接

时间:2012-06-12 18:17:27

标签: sql ruby-on-rails activerecord

我有以下型号

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查询。

0 个答案:

没有答案