2014-09-24 202 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(*)') 

這應該呈現出一個雙連接來計算最終集。