假设我有嵌套结构
Resource A
-id
Resource B
-id
-a_id
Resource C
-id
-b_id
Resource D
-id
-c_id
给定一个 a_id,我想在一个查询中获取所有 D,例如:
SELECT *
FROM D
JOIN C on c_id
JOIN B on b_id
WHERE B.a_id = a_id
我知道我可以内联这个 SQL,但我想知道是否有办法用 ActiveRecord 关系做到这一点?
假设我有嵌套结构
Resource A
-id
Resource B
-id
-a_id
Resource C
-id
-b_id
Resource D
-id
-c_id
给定一个 a_id,我想在一个查询中获取所有 D,例如:
SELECT *
FROM D
JOIN C on c_id
JOIN B on b_id
WHERE B.a_id = a_id
我知道我可以内联这个 SQL,但我想知道是否有办法用 ActiveRecord 关系做到这一点?
class A < ActiveRecord::Base
hash_many :bs
end
class B < ActiveRecord::Base
belongs_to :a
has_many :cs
end
class C < ActiveRecord::Base
belongs_to :b
has_many :ds
end
class D < ActiveRecord::Base
belongs_to :c
end
C.joins(:c => :b).where(:b => {:a_id => <given_a_id>})
在 active_record 文档中找到了答案。
D.joins(C: :B).where(B: { a_id: a_id})