2014-09-24 166 views
1

这可能很容易。我有以下型号:计算儿童儿童的轨迹

  • 美孚有很多酒吧
  • 酒吧有很多Marflars

而且我想找出给定富多少Marflars有

我以为它会放轻松。我试过以下,但它会导致一些有趣的事情发生:

@foo = Foo.find(params[:id]) 
@bars = @foo.bars 
@marflars = [] 
@bars.each do |bar| 
    @marflars << bar.marflars 
end 

最简单的方法来做到这一点?

回答

1

加载它们并以这种方式处理它们效率极低,并且如果您有大量数据则无法工作。实例化每一件事物作为模型来计算它们是非常浪费的。

相反,你可以查询此:

Foo.includes(bars: :marflars).pluck('COUNT(*)') 

这应该呈现出一个双连接来计算最终集。