2015-11-01 93 views
0

我有这样的代码,但它是我喜欢表演WAAAY太多的疑问:Rails的减少查询数量

all.includes(:cycles).each do |coaster| 
    coaster.cycles.all.each do |cycle| 
     unless coaster.length == nil 
     unless cycle.date == nil 
      if Date.parse(cycle.date).year == options[:year] 
      distance += coaster.length 
      end 
     end 
     end 
    end 
    end 

在1号线我告诉它包括周期,但它看起来像2号线正在做单独查询每个过山车的周期,在线1上较大的简单查询的ontop。

有没有办法做到这一点,但减少查询的数量?

+0

从第二行删除'all' - 它创建了一个未预加载的新的重新映射对象。 – BroiSatse

+0

@BroiSatse太棒了!谢谢。将研究,以帮助我进一步了解。谢谢!随意添加,作为答案,我会接受它。 – rctneil

回答

2

只要删除all,它会创建一个未预加载的新关系对象。如果你想稍微了解它,我已经在最近给出了关于该主题的讨论:https://skillsmatter.com/skillscasts/6731-activerecord-vs-n-1

+0

史诗般的谈话!!!!!!!!!!!!!你让我想起了谢尔盖·布林一点 –

+0

@BroiSatse是的,很棒的谈话,非常翔实。感谢分享。 – rctneil