Файлы переименования скрепки после того, как они сохраняются

То, как я переименовываю файл после того, как, было загружено и сохранено? Моя проблема состоит в том, что я должен проанализировать информацию о файлах автоматически для предложения имени файла, файл должен быть сохранен как с моим приложением, но я не могу получить доступ к информации, запрошенной для генерации имени файла, пока запись для модели не была сохранена.

18
задан fivetwentysix 25 April 2010 в 12:02
поделиться

2 ответа

Если, например, ваша модель имеет изображение атрибута:

has_attached_file :image, :styles => { ...... }

По умолчанию файлы papepclip хранятся в / system /: attachment /: id /: style /: filename.

Итак, Вы можете добиться этого, переименовав каждый стиль, а затем изменив столбец image_file_name в базе данных.

(record.image.styles.keys+[:original]).each do |style|
    path = record.image.path(style)
    FileUtils.move(path, File.join(File.dirname(path), new_file_name))
end

record.image_file_name = new_file_name
record.save
24
ответ дан 30 November 2019 в 05:44
поделиться

Проверяли ли вы интерполяции скрепок?

Если это что-то, что вы можете выяснить в контроллере (до его сохранения), вы можете использовать комбинацию контроллера, модели и интерполяции для решения вашей проблемы.

У меня есть пример, где я хочу назвать файл на основе его MD5-хэша.

В моем контроллере у меня есть:

params[:upload][:md5] = Digest::MD5.file(file.path).hexdigest

Затем у меня есть config/initializers/paperclip.rb с:

Paperclip.interpolates :md5 do|attachment,style| 
  attachment.instance.md5
end

Наконец, в моей модели у меня есть:

validates_attachment_presence :upload
has_attached_file :upload,
  :path => ':rails_root/public/files/:md5.:extension',
  :url => '/files/:md5.:extension'
23
ответ дан 30 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: