如何将参数从控制器转换为Sidekiq workerrails

问题描述

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

我的动作和邮件收发器一切正常。但是,我正在尝试将此工作交给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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...