2017-05-02 5 views
0

私はRuby on Railsアプリケーションのためにレーキタスクを作成しています。私は現在、ちょうどそれが正しいフィールドにアクセスしていることを確認作ってるんだ、とこれまでのところ、これを書いた:ループ内の変数を適切に割り当てる方法は?

namespace :abc do 
    desc "Used to generate a new daily log" 

    task :create_post => :environment do 
    User.find_each do |currentUser| 
     STARTING_DATE = currentUser.start_date 
     puts STARTING_DATE 
    end 

    puts "It worked yo"  

    end 
end 

私はこのrakeタスクを実行すると、コマンドラインに出力されている:

$ rake abc:create_post 
2017-05-02 03:34:20 UTC 
C:/Users/vanbeeandr/workspace/online_journal/lib/tasks/create_post.rake:7: warning: already initialized constant STARTING_DATE 
C:/Users/vanbeeandr/workspace/online_journal/lib/tasks/create_post.rake:7: warning: previous definition of STARTING_DATE was here 
2017-04-02 03:34:28 UTC 
It worked yo 

のに対し私は、出力は単純であることを期待したい:

$ rake abc:create_post 
2017-05-02 03:34:20 UTC 
2017-04-02 03:34:28 UTC 
It worked yo 

私はSTARTING_DATE変数間違っを割り当てていますか?私は本当にRubyに慣れていないので、なぜこのエラーを引き起こしているのか分かりません。

ご協力いただきましてありがとうございます。

答えて

1

Rubyでの問題とUPPERCASE_NAMESは定数を示します。ループ内の定数に値(同じ値さえも)を繰り返し割り当てるときに、それらを再割り当てするべきではありません。

次のいずれかの

  • 移動し、それは本当の定数は、(あなたのケースであるようには見えない)
  • が(非定数の値の定数を使用しないでくださいかどうループの外に一定つまり、starting_date = currentUser.start_dateを使用してください)
+0

完璧、私の問題を解決するための時間をとってくれてありがとう&エラーも説明する:) – Andrew

関連する問題