我有这个代码,但它正在按照我的喜好执行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行的较大简单查询的顶部。
有没有办法做到这一点,但减少了查询次数?
答案 0 :(得分:2)
只需删除all
,它就会创建一个未预加载的新关系对象。如果你想稍微理解一下,我最近就这个主题进行过一次演讲:https://skillsmatter.com/skillscasts/6731-activerecord-vs-n-1