如何添加两个延迟的作业

时间:2017-07-18 20:08:03

标签: ruby-on-rails delayed-job

我正在使用delayed_jobs gem。假设,我有一个带有以下代码的ArticleController

@articles.each do |ar|
    #call send mail method and add to delay
    #call createpdf method and add to delay

  end

和另一个类BackgroundJobs.rb

class BackgroundJobs < ActiveRecord::Base
  def sendmail(article_id)
     #code to send mail
  end

 def createpdf((article_id))
     #code to generate pdf     
 end

end

如何将发送邮件和createpdf方法添加到articlecontroller代码中的延迟作业。

1 个答案:

答案 0 :(得分:1)

首先,我会在BackgroundJobs中创建方法而不是实例方法:

class BackgroundJobs < ActiveRecord::Base
  def self.sendmail(article_id)
    #code to send mail
  end

  def self.createpdf(article_id)
    #code to generate pdf     
  end
end

然后直接在控制器中调用它们:

@articles.each do |ar|
  BackgroundJobs.delay.sendmail(ar.id)
  BackgroundJobs.delay.createpdf(ar.id)
end