Как мне удержать скрепку от удаления вложений из модели acts_as_paranoid? - PullRequest
5 голосов
/ 11 февраля 2011

У меня есть модель с парой различных вложений изображений, управляемых скрепкой. Недавно мы изменили поведение модели, чтобы ее можно было безболезненно удалять и восстанавливать с помощью activ_as_paranoid. Все отлично работает, за исключением того, что когда мы мягко удаляем модель, скрепка также удаляет вложения.

Я просмотрел документы и код на скрепке и не вижу очевидного способа обойти это. Я хотел бы иметь возможность указать paperclip, чтобы он игнорировал обратные вызовы удаления на модели и оставлял вложения рядом?

Ответы [ 2 ]

8 голосов
/ 30 мая 2012

Скрепка теперь имеет опцию preserve_files. Переопределение не должно быть необходимым сейчас.

Сохранение файлов для Soft-Delete

Опция доступна для сохранения вложений, чтобы хорошо играть с мягко удаленными моделями. (act_as_paranoid, паранойя и т. д.)

has_attached_file :some_attachment, {
  :preserve_files => "true",
}

Это предотвратит уничтожение some_attachment при разрушении модели, поэтому оно будет существовать, когда объект будет восстановлен позже.

https://github.com/thoughtbot/paperclip#file-preservation-for-soft-delete

2 голосов
/ 11 февраля 2011

Сумасшедший, сколько раз вы находите ответ на свой вопрос сразу после того, как задаете его.Я опускаю это здесь на случай, если у кого-то еще есть такая же проблема, или, возможно, у кого-то есть лучшее решение для этого.Для меня сработало переопределение метода, используемого paperclip для ответа на обратный вызов before_destroy.Я добавил это в свой код, и теперь он сохраняет мои вложения, чтобы они были там, если я позже восстановлю модель.

 protected  

  def destroy_attached_files
    logger.error "-------------- This is me NOT destroying my attachments"
  end
...