Rails计算儿童的孩子

时间:2014-09-24 19:46:20

标签: ruby-on-rails

这可能很容易。我有以下型号:

  • Foo有很多酒吧
  • 酒吧有很多Marflars

我想知道给定Foo有多少Marflars

我觉得这很容易。我尝试了以下但是它会导致一些有趣的事情发生:

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

这样做的好方法是什么?

1 个答案:

答案 0 :(得分:1)

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

相反,您可以查询:

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

那应该渲染出一个双连接来计算最终的集合。