Очистка BLOB-объектов по умолчанию в Rails 6 - PullRequest
0 голосов
/ 19 апреля 2020

Удаление объекта ActiveStorage в Rails 6 не очищает BLOB-объект. Он удаляет запись из базы данных, но файл все еще существует. Нужно вручную вызвать purge или purge_later, чтобы окончательно удалить файл.

Это застало меня врасплох, почему вы хотите удалить ссылку, но сохранить файл?

Есть ли способ изменить значение по умолчанию и указать Rails всегда очищать blob / файл, если запись удалена?

В качестве альтернативы, я мог бы вручную проверить, были ли удалены какие-либо вложения в хуке after_save или cronjob для периодического удаления всех потерянных файлов. Какой самый идиоматический c способ подойти к этому?

1 Ответ

0 голосов
/ 22 апреля 2020

Нашел это. Я использую драгоценный камень Apartment и забыл исключить модели ActiveStorage. Жемчужина квартиры использует представления базы данных, поэтому она удалит ссылку из базы данных, но я предполагаю, что purge_later не работает в той же области базы данных.

За исключением моделей ActiveStorage в config/initializers/apartment.rb, все получилось.

config.excluded_models = %w{ ActiveStorage::Attachment ActiveStorage::Blob }
...