我刚刚从carrierwave_backgrounder切换到了carrierwave_direct。我有carrierwave_direct设置和运行。也就是说,主文件正在上传并可以在视图中显示。但是,我的上传器版本尚未创建。
class ProcessReceiptJob < ApplicationJob
queue_as :process_receipt
def perform(expense_id, key)
expense = Expense.find expense_id
uploader = expense.receipt
expense.key = key
expense.remote_receipt_url = uploader.direct_fog_url(with_path: true)
expense.save!
# expense.recreate_versions!
end
after_perform do |job|
expense = Expense.find(job.arguments.first)
expense.update_column :receipt_processing, false
end
end
当carrierwave_direct完全处理版本时---或者,当指示carwave处理版本时是什么时候?我假设使用expense.remote_receipt_url加载原始图像,然后调用save!触发上传程序处理版本。这是对的吗?
无论如何,我的原始图像是通过后台作业上传的 - 但是,版本没有被创建/上传。
我是否需要&#34; recreate_versions&#34;甚至以为他们以前不存在?在指向源文件后是否需要以某种方式显式处理版本,还是应该自动处理?
答案 0 :(得分:0)
我在分配模型后没有保存模型:键在发送背景工作者之前。我将密钥作为参数发送给后台工作者,然后在处理作业时保存模型。这是问题所在。在文档中提到了在分配模型后需要保存模型:成功操作的关键。
所以,我不得不更新update_attributes(key:params [:key]),然后调用我的后台工作(顺便提一下模型再次保存)。