0

我刚刚从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 究竟何时处理版本——或者,carrierwave 何时指示处理版本?我假设使用费用.remote_receipt_url 加载原始图像,然后调用保存!触发上传者处理版本。那是对的吗?

无论如何,我的原始图像是通过后台作业上传的——但是,没有创建/上传版本。

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

4

1 回答 1

0

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

所以,我不得不 update_attributes(key: params[:key]) 然后调用我的后台作业(顺便再次保存模型)。

于 2017-01-25T22:45:01.707 回答