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

时间:2013-03-13 09:54:05

标签: activerecord ruby-on-rails-3.2

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

例如,当有一个模型空间时:

 —————                —————             —————
|  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。获取相关的Bs,3。获取相关的Cs)。

1 个答案:

答案 0 :(得分:0)

由于您使用的是Rails 3,因此您可以将这些方法链接起来。

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