2016-10-27 43 views
0

我正在查看意味着優化在我的代碼中完成的查詢數量。rails activerecord - 通過單個查詢獲得很大的祖父母價值

比方說,我有這樣的聯想鏈:

A belongs to B 
B belongs to C 
C belongs to D 

比方說,我有一個目的,我想這對D. 我如何去了解它會出現一個場未做3個查詢(天真的做法):

a.b.c.d.value 

爲了澄清,我已經有一個對象在手邊。 (這是上述代碼中的a

回答

0

我最終建成如下:

A.where("a.id = #{a.id}").joins(b: [{c: :d}]).select("d.value").pluck(:value) 
0

在這裏,您可以使用嵌套連接查詢。

A.joins(B: [{C: :D}]). 
     where(D.column_name => "Any Value") 
+0

這不會爲我工作。我已經有一個手頭的對象的實例,所以我不能在對象上使用連接。此外,這是一個查詢,我想獲取值(我不知道它是什麼) –

+0

您可以更新您的實際場景以便更好地理解。 – user100693

0

你試過:

class a 
    belongs_to :b 
    has_one :d, :through :b 
end 

class b 
    belongs_to :c 
    has_one :d, :through :c 
end 

然後,您應該能夠使用A.D

相關問題