参数不传递Delayed :: Job方法

时间:2017-04-30 04:12:38

标签: ruby-on-rails ruby ruby-on-rails-4 delayed-job

我正在使用Delayed :: Job从rails应用程序发送短信。我在Gemfile中包含了如下的gem。

gem 'delayed_job', "~> 4.1.1"

我还添加了自定义延迟作业

class SendSmsJob < Struct.new(:person_id, :content)

  include DelayedAirbrakeNotification


  def perform
    person = Person.find(person_id)
    phone = person.phone_number
    ....
    ....
    ....

  end

end

我正在从控制器触发这项工作,

Delayed::Job.enqueue(SendSmsJob.new(@person.id, "Test message"))

但是当我尝试在person_id方法下使用contentperform的值时,我分别得到nil""。 我对其他工作采用相同的方法,这些工作完美, 我不知道如果我在这里遗漏了什么。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

首先,您应该按照here所述安装DelayedJob作为ActiveJob的后端。 然后通过运行以下命令生成ActiveJob作业:

rails generate job NAME [options]

运行rails generate job --help获取帮助或查看documentation page

最后但并非最不重要的是,在perform方法中,您应该定义所需的任何参数。

def perform(person_id)
  ...
end