Rails减少查询次数

时间:2015-11-01 11:05:16

标签: sql ruby-on-rails activerecord

我有这个代码,但它正在按照我的喜好执行WAAAY太多查询:

  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行的较大简单查询的顶部。

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

1 个答案:

答案 0 :(得分:2)

只需删除all,它就会创建一个未预加载的新关系对象。如果你想稍微理解一下,我最近就这个主题进行过一次演讲:https://skillsmatter.com/skillscasts/6731-activerecord-vs-n-1