Amazon s3 何时不使用carrierwave_direct处理版本?

Amazon s3 何时不使用carrierwave_direct处理版本?,amazon-s3,carrierwave,delayed-job,rails-activejob,carrierwave-direct,Amazon S3,Carrierwave,Delayed Job,Rails Activejob,Carrierwave Direct,我刚从carrierwave_背景切换到carrierwave_direct。我有carrierwave_direct设置和运行。也就是说,主文件正在上载,并且可以显示在视图中。但是,没有创建我的上载程序版本 以下是我的工作: class ProcessReceiptJob

我刚从carrierwave_背景切换到carrierwave_direct。我有carrierwave_direct设置和运行。也就是说,主文件正在上载,并且可以显示在视图中。但是,没有创建我的上载程序版本

以下是我的工作:
class ProcessReceiptJob
carrierwave_direct什么时候处理版本?或者什么时候指示carrierwave处理版本?我假设使用expense.remote\u receipt\u url加载原始图像,然后调用save!触发上载程序以处理版本。对吗

在任何情况下,我的原始图像都是通过后台作业上传的——但是,没有创建/上传版本


我是否需要“重新创建_版本”,即使它们以前不存在?我是否需要在指向源文件后以某种方式显式处理版本,还是应该自动处理版本?

在将模型发送给后台工作程序之前,我没有在分配了:key之后保存模型。我将密钥作为参数发送给后台工作人员,然后在处理作业时保存模型。这就是问题所在。文档中提到,分配模型后需要保存模型:输入成功操作


因此,我必须更新_属性(key:params[:key]),然后调用我的后台作业(顺便说一句,模型再次保存在这里)。

因此,我发现我上面的陈述是正确的..保存!加载远程文件后的操作将触发上载程序。我想知道我的版本是否没有被创建,因为来自S3的文件的内容类型为“二进制/八位字节流”。。。
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