我正在查看意味着優化在我的代碼中完成的查詢數量。rails activerecord - 通過單個查詢獲得很大的祖父母價值
比方說,我有這樣的聯想鏈:
A belongs to B
B belongs to C
C belongs to D
比方說,我有一個目的,我想這對D. 我如何去了解它會出現一個場未做3個查詢(天真的做法):
a.b.c.d.value
爲了澄清,我已經有一個對象在手邊。 (這是上述代碼中的a)
我正在查看意味着優化在我的代碼中完成的查詢數量。rails activerecord - 通過單個查詢獲得很大的祖父母價值
比方說,我有這樣的聯想鏈:
A belongs to B
B belongs to C
C belongs to D
比方說,我有一個目的,我想這對D. 我如何去了解它會出現一個場未做3個查詢(天真的做法):
a.b.c.d.value
爲了澄清,我已經有一個對象在手邊。 (這是上述代碼中的a)
我最終建成如下:
A.where("a.id = #{a.id}").joins(b: [{c: :d}]).select("d.value").pluck(:value)
在這裏,您可以使用嵌套連接查詢。
A.joins(B: [{C: :D}]).
where(D.column_name => "Any Value")
你試過:
class a
belongs_to :b
has_one :d, :through :b
end
class b
belongs_to :c
has_one :d, :through :c
end
然後,您應該能夠使用A.D
這不會爲我工作。我已經有一個手頭的對象的實例,所以我不能在對象上使用連接。此外,這是一個查詢,我想獲取值(我不知道它是什麼) –
您可以更新您的實際場景以便更好地理解。 – user100693