问题描述
我的应用程序中有某些操作,当这些操作发生时,邮件将被发送出去。
我的动作和邮件收发器一切正常。但是,我正在尝试将此工作交给sidekiq工人处理。
我在该应用程序中的工作人员工作正常,但是我在使邮件通过该工作人员工作时遇到问题。
这是我的工人
class SendMailerWorker
include Sidekiq::Worker
sidekiq_options retry: false
def perform
@candidate = Candidate.find(params[:id])
@candidate.destroy
TestMailer.send_request()
end
end
这是我的控制器
def destroy
SendMailerWorker.perform_async
end
但是此设置无法正常工作,出现以下错误:NameError:未定义的局部变量或方法`params'
问题是,如何在工作程序中访问参数?
解决方法
只需将参数从控制器传递给sidekiq worker
class SendMailerWorker
include Sidekiq::Worker
sidekiq_options retry: false
def perform(candidate_id)
@candidate = Candidate.find(candidate_id)
@candidate.destroy
TestMailer.send_request()
end
end
def destroy
SendMailerWorker.perform_async(params[:id])
end