ActiveRecord:聪明的加入和包含

时间:2009-09-24 15:50:06

标签: sql ruby activerecord join

我正在尝试让ActiveRecord执行以下查询:

SELECT A.*, B.*, C.* FROM A INNER JOIN B ON B.ID = B_ID INNER JOIN C ON C.ID = C_ID

数据集相当大,我需要作为最佳性能,因此这个特定的查询。

我的模型和查询如下:

class A < ActiveRecord::Base
  belongs_to :b
  belongs_to :c
end

A.find :all, :include => [:b, :c], :joins => [:b, :c]

但是,这会导致执行以下查询:

SELECT A FROM A INNER JOIN B ON B.ID = B_ID INNER JOIN C ON C.ID = C_ID
SELECT * FROM B WHERE ID IN (...)
SELECT * FROM C WHERE ID IN (...)

有没有办法让ActiveRecord变得更聪明而不进行后两个查询?

\

1 个答案:

答案 0 :(得分:1)

这只是一个假设。但我不明白为什么你需要定义:include和:join。 只有:连接应该足以进行查询并可能解决您的问题。