Resque에서의 첫 번째 시도이고 백그라운드 작업을 수행하고 있습니다.Resque job undefined method 'current_user'
저는 두 가지 문제가 있습니다. 그것은 나에게 내가 무엇을 내가 작업자에 밀어하고하는 것은 참으로 가장 올바른 일이 확실하지 오전 오류
undefined local variable or method `current_user'
. 여기
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
CURRENT_USER 내가 생각 헬퍼 방법 : – illusionist
@CbaBhusal 사용자를 User.find (params [: id])로 이동하여 trial을 제거하고 current_user.schedules.new를 user.schedules.new로 변경했습니다. 지금 내가 경험하는 새로운 오류는 "정의되지 않은 지역 변수 또는 메서드'params '" – sja
params는 http 요청이 만들어진 경우에만 사용할 수 있다고 생각합니다. getm 포스트 등 컨트롤러 및보기에만 – illusionist