2012-06-07 90 views
1

我寫了這個任務來填充表。 「飛行」表非常大(23000個帖子)。但是當我們第二次穿過循環時,我得到了這個奇怪的錯誤。未定義的方法`+ @'爲true:TrueClass

下面的代碼:

desc "Compute the AirlineTerminal Table" 
task :populate_airlineterminals => :environment do 
    #first delete content 
    AirlineTerminal.destroy_all 
    allFlights = Flight.all 

     #AFTER ONE ITERATION THE ERROR HAPPENS 
    allFlights.each do |f| 
     atTerminal = AirlineTerminal.where(:airline_id => f.airline_id, :airport_id => f.airport_id, :terminal => f.terminal).first 
     if atTerminal.nil? 
      atTerminal = AirlineTerminal.new 
      atTerminal.airport_id = f.airport_id 
      atTerminal.airline_id = f.airline_id 
      atTerminal.terminal = f.terminal 
     end 
     atTerminal.count++ 

     atTerminal.save #so far so good 
    end 
end 

這是當我運行該腳本會發生什麼,通過它崩潰一週之旅後。

$ rake populate_airlineterminals 
rake aborted! 
undefined method `[email protected]' for true:TrueClass 
+0

運行帶有'--trace'選項,以獲得完整的堆棧跟蹤你的rake任務。至少你會知道你的代碼的哪一行導致了這個問題。 –

+0

我給列命名。不是很聰明,因爲它與.count運算符相撞。要重命名,看看會發生什麼。 – TOMvonMOM

+0

'renamed_column:airline_terminals,:count,:departure_count'。沒有不同。它是在fsave第一次崩潰之後循環的。 – TOMvonMOM

回答

4

雖然我不知道這個錯誤我敢打賭,

atTerminal++ 

是罪魁禍首。據我所知++沒有在ruby中定義。你必須使用

atTerminal += 1 

除非你自己定義了它。也許它在解釋代碼時會導致錯誤。試試irb。

相關問題