Я запускаю прямую загрузку 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'