在ActiveRecord查询中使用嵌套关联混合:include和:join

在ActiveRecord查询中使用嵌套关联混合:include和:join,activerecord,ruby-on-rails-3.2,Activerecord,Ruby On Rails 3.2,我想知道是否以及如何在关联中实现混合:include和:join,以避免从数据库检索对象时不必要的往返 例如,当具有以下模型空间时: ————— ————— ————— | A | 0..1 ————— * | B | * ————— 1 | C | ————— ————— ————— 在这里,我通过一个已知的标识符加载一个A的实例以显示在我的视图中,但我也想加载B和C(

我想知道是否以及如何在关联中实现混合
:include
:join
,以避免从数据库检索对象时不必要的往返

例如,当具有以下模型空间时:

 —————                —————             —————
|  A  | 0..1 ————— * |  B  | * ————— 1 |  C  |
 —————                —————             —————
在这里,我通过一个已知的标识符加载一个A的实例以显示在我的视图中,但我也想加载B和C(B通过
:include
,C通过
:joins
)。这能做到吗?到目前为止,我只使用了
:include
,即

A.find params[:id], :include => [ { :b => :c } ]

这自然会生成两个额外的往返(1.按id获取A,2.获取关联的B,3.获取关联的C)。

因为您使用的是Rails 3,所以可以链接这些方法

A.includes(:b).joins(b: :c).find(params[:id])