我正在使用active_record fork(link)来使用delayed_job。
在控制器中:
guide = Rightsguide.new
guide.run(@works, current_user)
在Rightsguide ruby类中:
require 'delayed_job'
require 'delayed/tasks'
require 'prawn'
require 'open-uri'
class Runrightsguide
def run(works, current_user)
pdf = Rightsguidereport.new(works, current_user)
filename = "#{Rails.root}/public/#{Date.today}_rightsguide.pdf"
pdf.render_file(filename)
pdf_file = File.open(filename)
archive = RightsguideArchive.new(:user_id => current_user)
archive.pdf = pdf_file
archive.save!
User.find(current_user).notice "<a href='/rightsguide_archives' target='_blank'>View Rights Guide</a>", :level => :notice, :sticky => true, :title => "AIs generated."
end
end
以上工作正常,但当我在handle_asynchronously :run
方法之后使用run
之类的delayed_job调用之一时,我得到wrong number of arguments (2 for 1)
。
答案 0 :(得分:6)
嗯。结果@works
参数是问题所在。这是一个ActiveRecord关系。 Delayed_job不喜欢它。将关系转换为ID数组就完成了这项工作。