2017-05-02 1 views
0

Ruby on Rails 응용 프로그램에 대한 rake 작업을 작성하고 있습니다. 나는 현재 단지 확인 올바른 필드에 액세스하고있어,이 지금까지 쓴 :이 레이크 작업을 실행하면루프에서 변수를 올바르게 할당하는 방법?

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 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

관련 문제