При использовании прямой загрузки файлы загружаются в хранилище, как только они прикрепляются к форме, а не при отправке формы.
Что происходит, когда файлы прикрепляются, браузер делает запросна Rails для временного URL прямой загрузки в ваше хранилище (S3, Azure, Google и т. д.), отсюда и название Direct Upload.Это означает, что файлы не должны передаваться через ваш сервер, что отнимает много лишних усилий.Когда Rails отвечает временным URL-адресом для загрузки, он также создает запись Blob и отправляет ключ для этого BLOB-объекта также в браузер.
Как только браузер успешно обработал прямую загрузку, он скрывает скрытый элемент.в DOM, который ссылается на ключ BLOB.Затем, когда вы отправляете форму, если действие отправки успешно, Rails присоединит BLOB-объект к вашей модели Транспортного средства (используя полиморфную запись ActiveStorage :: Attachment).Только на этом этапе изображение (BLOB-объект) фактически прикрепляется к вашей записи транспортного средства.
Если отправка формы не удалась, BLOB-объект не будет прикреплен к вашей записи.Если это произойдет, вы не сможете удалить BLOB-объект, используя метод, описанный выше, поскольку он не связан с @vehicle
.Разумное решение может состоять в том, чтобы периодически запускать грабли, которые ищут BLOB-объекты, которые не имеют вложений, и удаляют их.