Ошибка StandardError не обнаруживается с помощью ActiveStorage :: Blob.find_signed - PullRequest
0 голосов
/ 27 февраля 2019

Я запускаю прямую загрузку ActiveStorage в форме, и когда форма отправляется, она загружается на S3.У меня есть проверка в сервисном объекте, который проверяет, является ли файл слишком большим, даже после прохождения некоторого JavaScript, который проверяет размер.Если это так, файл удаляется с S3, и я удаляю ActiveStorage :: Blob из моей базы данных (для технических ограничений).Когда я запускаю следующий код:

def blob
    @blob ||= ActiveStorage::Blob.find_signed(signed_id) unless signed_id.blank?
rescue StandardError => error
    # Handle error
end

, если пользователь обновляет страницу, и форма повторно отправляется с помощью signed_int ActiveRecord :: RecordNotFound все еще поднимается к контроллеру и завершается ошибкой в ​​строке напоминания.

Что может привести к тому, что спасение на StandardError не будет перехвачено?

Редактировать: Вот трассировка стека

ActiveRecord::RecordNotFound - Couldn't find ActiveStorage::Blob with 'id'=80:
app/services/contact_us_form_manager.rb:76:in `blob'
app/services/contact_us_form_manager.rb:66:in `check_file_size'
app/services/contact_us_form_manager.rb:37:in `create'
app/controllers/admin/contacts_controller.rb:18:in `create'
app/controllers/application_controller.rb:280:in `set_true_user'
app/controllers/application_controller.rb:262:in `set_current_user'
app/controllers/application_controller.rb:255:in `set_current_client'
app/controllers/application_controller.rb:113:in `assign_time_zone'
...