2009-09-24 84 views
1

我試圖讓ActiveRecord的執行下面的查詢: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

這只是一個假設。但我不明白爲什麼你需要定義:include和:join。 只有:連接應該足以進行查詢並可能解決您的問題。

+0

感謝您的回覆。不幸的是,如果我刪除:include,它不會進行急切的加載,這是一個要求。 – 2009-09-24 16:07:34