Refile + S3: удалить вложение и сохранить запись в БД - PullRequest
0 голосов
/ 22 апреля 2019

Я использую refile gem для загрузки файлов на S3 и имею следующую модель

class DataFile < ActiveRecord::Base
  attachment :document, destroy: true
end

Соответствующая таблица в базе данных содержит столбцы document_filename и document_id для хранения метаданных файла.

Мне нужно удалить файл из S3 и сохранить соответствующую строку в БД (это необходимо для отображения имени и даты удаления этого файла).

Я пытаюсь сделать

data_file.document = nil
data_file.save()

Но это удаляет имя файла. Есть ли решение удалить файл из S3 и сохранить document_filename значение.

1 Ответ

1 голос
/ 22 апреля 2019

Я бы определил 2 новых столбца в соответствующей модели и скопировал данные, чтобы они оставались там после удаления.

Это более согласованно, чем сохранение искаженных refile объектов:

data_file.update_attributes!(
  file_name: data_file.document.filename,
  removed_at: DateTime.now,
  document: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...