请求作业未定义的方法 'current_user'

Resque job undefined method 'current_user'

这是我第一次尝试 Resque 和做后台工作,我有点卡住了。

我手头有两个问题。

  1. 它给我错误

    undefined local variable or method `current_user'
    
  2. 我不确定我向工人推送的是否确实是最正确的。

这是我的代码:

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

结束

和工人:

apps/workers/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 作为要添加的东西是否正确?

试试这个 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

和工人:

apps/workers/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