Resque job undefined方法' current_user'

时间:2015-01-04 05:31:34

标签: ruby-on-rails resque

这是我第一次尝试Resque和做背景工作,而且我有点陷入困境。

我手头有两个问题。

  1. 它给了我错误

    undefined local variable or method `current_user'
    
  2. 我不确定我向工人推送的东西确实是最正确的。
  3. 这是我的代码:

    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

    class ScheduleTweets
     @queue = :schedules_queue
    
     def self.perform(client)
      user = User.find(params[: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 
    
    end
    

    我的思维过程是客户是整个过程的核心,因此应该是一个。但是@profile_ids也包含1-5个值的任何值。

    当我运行任务时,我得到未定义的局部变量或方法'current_user'。我如何解决这个问题,我是通过选择@client作为要添加的东西来做到这一点吗?

1 个答案:

答案 0 :(得分: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

和工人:

应用/工人/ 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