2015-11-01 96 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