rails N+1

解决方案:
使用 includes, 在 where, 或者 find 等查询之前。

例如:

@fans = Fan.joins(:sales_checks)
           .includes([:sales_checks => [{:wins => :award}, :cash_desk]])

如果, fan : sales_checks = 1 : n,

sales_checks : wins = 1 : n , sales_checks : cash_desk = n : 1

wins : award = n : 1

那么,我们在查询fan的时候,要带上 sales_checks, 那么就 Fan.includes(:sales_checks)

也可以写成: Fan.includes( [:sales_checks])

如果在查询时,要带上 wins, 那么就: Fan.includes([:sales_checks => [:wins]])

如果再带上 cash_desk的话, 那么就 Fan.includes([:sales_checks => [:wins, :cash_desk]) (注意这里 cash_desk是单数, 因为一个 cash_desk对应多个 sales_checks )

如果要带上 wins的 award的话, 那么就是:

Fan.includes([:sales_checks => [{:wins => :award}]])

推荐大家使用bullet 这个gem .特别好用.