Carrierwave — Удалить файл из Amazon S3, но сохранить запись в бд

#ruby-on-rails #ruby-on-rails-3.1 #carrierwave

#ruby-on-rails #ruby-on-rails-3.1 #carrierwave

Вопрос:

Я вижу, что мы можем использовать object.file.remove! or object.remove_file! для удаления файлов из S3, но object все еще сохраняет .file .

Я хочу установить object.file значение nil или empty, потому что я хочу удалить файл из S3, но все еще хочу сохранить запись в своей базе данных (для целей статистики).

Комментарии:

1. Вы выяснили, как это сделать?

2. Нет … и я прекратил поддерживать проект, который использует carrierwave

3. Ха, понятно, значит ли это, что ты им больше не пользуешься? Является ли carrierwave ненадежным?

4. Нет, он по-прежнему надежен, мы просто завершаем проект.

Ответ №1:

Вы могли бы добавить другое поле в вашу файловую таблицу с именем expired. В методе, который удаляет файл из S3, используйте атрибут update_attribute для изменения поля с истекшим сроком действия. Если срок действия истек, равно true, тогда не разрешайте загрузку «файла».

 Document.update_attribute(:expired, true)   
  

Комментарии:

1. В настоящее время я работаю с этим решением, но это не ответ на вопрос. =]