我正在使用carrierwave將文件上傳到amazon S3和delayed_job_activerecord gem。延遲作業:無法爲非持久記錄創建作業
我有,我產生一個XLSX文件,並將其上傳到Amazon S3的功能,但我得到這個錯誤:
作業不能用於非持續記錄創建:#< Xlsxfiles ID:無,created_at :無,的updated_at:無,xlsxfile:無>
Xlsxfiles是上傳
這裏是我的功能:
def generate_xlsx(content)
temp_file = Tempfile.new(['users','.xlsx'])
ToXls::Writer.new(content, {:columns => [:name,:address],
:headers => ["name","address"]}).write_io(temp_file)
temp_file.rewind
file = File.open(temp_file)
#self.xlsxfile = file
self.xlsxfile.store!(file)#
#self.write_carrierwave_identifier
self.save!
end
handle_asynchronously :generate_xlsx
這裏就是我所說的功能可按
def index
@users = User.all.page(params[:page]).per(10)
respond_to do |format|
format.html
format.xls {
s = Xlsxfiles.new
s.generate_xlsx(@users)
redirect_to :back
}
end
end
沒有延遲的工作我的功能工作,並上傳文件到S3, 但是當我使用延遲工作,ActiveRecord的保存之前執行作業,任何解決方案?
你有沒有試過將'self.save!'上傳幾行之前發生? –
您是否需要查看調用generate_xlsx而不是其實現的代碼? –
尼克威伊斯,這不工作! Frederick Cheung,我將使用調用generate_xlsx的代碼編輯我的帖子! – pureofpure