0

Я только что переключился с carrierwave_backgrounder на carrierwave_direct. У меня установлена ​​и работает оператор 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 поручено обрабатывать версии? Я предполагаю, что загружаю исходное изображение с помощью функции costs.remote_receipt_url, а затем вызываю save! запускает загрузчик для обработки версий. Это верно?

В любом случае мое исходное изображение загружается через фоновое задание --- однако версии не создаются/не загружаются.

Нужно ли мне «воссоздавать_версии», даже если они не существуют раньше? Должен ли я как-то явно обрабатывать версии после указания на исходный файл или должен обрабатываться автоматически?

+0

Итак, я вижу, что мое утверждение выше правильно ... сохранить! действие после загрузки удаленного файла вызовет загрузчик. Мне интересно, не создаются ли мои версии, потому что файл из S3 имеет двоичный/октетный поток content_type ... – hellion

ответ

0

Я не сохранял модель после ее назначения: ключ ПЕРЕД отправкой фонового работника. Я отправлял ключ для фонового работника в качестве аргумента, а затем сохранял модель при обработке задания. Это была проблема. В документах упоминается необходимость сохранения модели после ее назначения: ключ к действию успеха.

Итак, мне пришлось обновить атрибуты (key: params [: key]), а THEN вызовет мою фоновое задание (где, кстати, модель сохраняется снова).