1

假设我有嵌套结构

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 关系做到这一点?

4

2 回答 2

1
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>})
于 2013-10-16T19:53:25.110 回答
0

在 active_record 文档中找到了答案。

D.joins(C: :B).where(B: { a_id: a_id})
于 2013-10-16T19:51:57.557 回答