1

このタスクは、テーブルにデータを入力するために作成しました。「フライト」テーブルはかなり大きいです(23000投稿)。しかし、2回目にループを移動すると、この奇妙なエラーが発生します。

コードは次のとおりです。

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

これは、スクリプトを実行したときに発生することです。ループを1回通過すると、スクリプトがクラッシュします。

$ rake populate_airlineterminals
rake aborted!
undefined method `+@' for true:TrueClass
4

2 に答える 2

4

私はエラーを知りませんが、私の賭けはそれです

atTerminal++

犯人です。私の知る限り、++はルビーでは定義されていません。あなたは使用する必要があります

atTerminal += 1

もちろん、自分で定義していない限り。コードの解釈中にエラーが発生する可能性があります。irbで試してみてください。

于 2012-06-07T17:06:46.217 に答える
1

Rubyには++または-演算子はありません+=および-=のみ

Rubyの初心者が知っておくべきこと

于 2012-06-09T15:24:57.210 に答える