2017-07-18 70 views
0

我正在使用delayed_jobs gem。假设,我有一个ArticleController与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 

我怎样才能在articlecontroller代码添加了发送邮件和createpdf方法来延迟工作下面的代码

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

    end 

和其他类。

回答

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 
+0

由于'BackgroundJobs'似乎除了执行这两种方法之外没有其他功能,您可以考虑将它们转换为服务。 – Gerry