在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])