这可能很容易。我有以下型号:
我想知道给定Foo有多少Marflars
我觉得这很容易。我尝试了以下但是它会导致一些有趣的事情发生:
@foo = Foo.find(params[:id])
@bars = @foo.bars
@marflars = []
@bars.each do |bar|
@marflars << bar.marflars
end
这样做的好方法是什么?
答案 0 :(得分:1)
加载它们并以这种方式处理它们效率极低,如果您有大量数据则无法工作。将每件事物作为模型进行实例化只是为了计算它们是非常浪费的。
相反,您可以查询:
Foo.includes(bars: :marflars).pluck('COUNT(*)')
那应该渲染出一个双连接来计算最终的集合。