如何从控制器获取参数到 Sidekiq worker (rails)

How to get params from controller into Sidekiq worker (rails)

我在我的应用程序中有某些操作,当它们发生时,邮件会被发送出去。

我的操作和邮件程序以及一切正常。但是,我正在尝试将这项工作交给 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: undefined local variable or method `params'

所以问题是,我如何访问 worker 中的参数?

只需将您的参数从控制器传递给 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