2015-01-04 3 views
0

Resque에서의 첫 번째 시도이고 백그라운드 작업을 수행하고 있습니다.Resque job undefined method 'current_user'

저는 두 가지 문제가 있습니다. 그것은 나에게 내가 무엇을 내가 작업자에 밀어하고하는 것은 참으로 가장 올바른 일이 확실하지 오전 오류

undefined local variable or method `current_user' 
  • 을 제공

    1. . 여기

  • 내 코드입니다 :

    schedules_controller.rb

    def trial 
    @schedule = current_user.schedules.new 
    if @schedule.save 
        user = User.find(params[:id]) 
        @client = Buffer::Client.new(user.token) 
        Resque.enqueue(ScheduleTweets, @client) 
        @schedule.update_attribute(:trial, true) 
        flash[:notice] = "success" 
        redirect_to :back 
    else 
        flash[:alert] = "Try again." 
        redirect_to :back 
    end 
    

    및 작업자 :

    애플 리케이션/노동자/schedule_tweets.rb

    내 생각 프로세스는 클라이언트가 전체 프로세스의 핵심이므로 하나 여야합니다. 그러나 @profile_ids에는 1-5 값이 포함됩니다.

    작업을 실행할 때 정의되지 않은 로컬 변수 또는 메서드 'current_user'가 나타납니다. 어떻게 해결할 수 있습니까? 또한 추가 할 물건으로 @client를 선택하면됩니다.

    애플 리케이션/노동자/schedule_tweets.rb

    class ScheduleTweets 
        @queue = :schedules_queue 
    
        def self.perform(user_id) 
        user = User.find(user_id) 
        client = Buffer::Client.new(user.token) 
        @list = List.first(6) 
        @profiles = client.profiles 
        @profile_ids = @profiles.map(&:id) 
        @list.each do |list| 
         client.create_update(body: {text: "#{list.text}", profile_ids: @profile_ids }) 
        end 
        end 
    end 
    
    +0

    CURRENT_USER 내가 생각 헬퍼 방법 : – illusionist

    +0

    @CbaBhusal 사용자를 User.find (params [: id])로 이동하여 trial을 제거하고 current_user.schedules.new를 user.schedules.new로 변경했습니다. 지금 내가 경험하는 새로운 오류는 "정의되지 않은 지역 변수 또는 메서드'params '" – sja

    +0

    params는 http 요청이 만들어진 경우에만 사용할 수 있다고 생각합니다. getm 포스트 등 컨트롤러 및보기에만 – illusionist

    답변

    0

    이 schedules_controller.rb

    def trial 
        @schedule = current_user.schedules.new 
        if @schedule.save 
        user = User.find(params[:id]) 
        @client = Buffer::Client.new(user.token) 
        Resque.enqueue(ScheduleTweets, user.id) 
        @schedule.update_attribute(:trial, true) 
        flash[:notice] = "success" 
        redirect_to :back 
        else 
        flash[:alert] = "Try again." 
        redirect_to :back 
        end 
    end 
    

    및 작업자를 사용해보십시오. 내가 맞습니까? 그렇다면 정의되어 있는지 확인하십시오.

    +0

    인수 --- 21 ... 예외 NameError 오류 정의되지 않은 지역 변수 또는 ScheduleTweets의 매개 변수 'params': 클래스 위의 인수 ho에서 ID를 찾을 수 있습니다. wever는 여전히 param 문제를 반환합니다. – sja

    +0

    이 오류는 무엇입니까? – illusionist

    +0

    this : /schedule_tweets.rb:5:in'perform ' 그러나 코드 줄이 어지럽 쳤지 ​​만 동일한 줄을 계속 말하고 있습니다. – sja