我写了这个任务来填充表格。 "飞行"表非常大(23000个帖子)。但是当我们第二次进入循环时,我得到了这个奇怪的错误。
以下是代码:
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 `+@' for true:TrueClass
答案 0 :(得分:4)
虽然我不知道错误,但我的赌注是
atTerminal++
是罪魁祸首。据我所知,++没有在ruby中定义。你必须使用
atTerminal += 1
除非你自己定义了它。也许它在解释代码时会导致错误。在irb中尝试。
答案 1 :(得分:1)
Ruby没有++或 - 运算符只有+ =和 - =