С помощью Rails Paperclip gem, как временно сохранить загруженный файл, если модель недействительна - PullRequest
5 голосов
/ 09 июня 2009

Я использую скрепку для прикрепления файлов к моделям. Когда вы загружаете файл с помощью Paperclip, файл сохраняется ТОЛЬКО при сохранении модели. Таким образом, если модель недействительна, загруженный файл не сохраняется. Есть ли способ временно сохранить загруженный файл, чтобы пользователю не приходилось загружать тот же файл, если модель недействительна?

1 Ответ

2 голосов
/ 10 июня 2009

Определите метод before_save, который проверяет, является ли объект действительным, если не сохраните файл на диск, дайте ему уникальное имя (создайте некоторый хэш)

Поместите это в форму, которую вы отправляете обратно в скрытое поле

Удалить поле загрузки в форме

Теперь в ветке else метода before_save проверьте, был ли hidden_field previous_upload или как вы его называете. Если есть загрузить изображение и назначить его атрибуту paperclip, он может вычислить остаток

attr_accessor :previous_upload

def before_save
  if valid?
    if previous_upload
      paperclip_file = #Load paperclip_file from /tmp
    else
      previous_upload = nil
    end
  else
    previous_upload = "Some unique key for each upload like ip and time or such"
    # Save paperclip_file with name previous_upload to /tmp
  end
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...