1

我写了这个任务来填充一个表。“飞行”表非常大(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
4

2 回答 2

4

虽然我不知道我敢打赌的错误是

atTerminal++

是罪魁祸首。据我所知 ++ 没有在 ruby​​ 中定义。你必须使用

atTerminal += 1

当然,除非您自己定义了它。也许它在解释代码时会导致错误。在 irb 中试试。

于 2012-06-07T17:06:46.217 回答
1

Ruby 没有 ++ 或 -- 运算符,只有 += 和 -=

Ruby 新手应该知道的事情

于 2012-06-09T15:24:57.210 回答