Скрепка скрепки для имени файла db / фактическое несоответствие - PullRequest
2 голосов
/ 06 февраля 2011

Я создаю небольшое приложение для загрузки простых текстовых файлов с помощью Paperclip. У меня есть модель Upload с вложением документов. Я хочу переименовать загруженный файл, чтобы он совпадал с Upload.title.

Для этого я использовал интерполяцию Paperclip.

#config/initializers/paperclip.rb
Paperclip.interpolates('upload_title') do |attachment, style|
  attachment.instance.title.parameterize
end

#app/models/upload.rb
has_attached_file :document,
  :url => "/:attachment/:id/:upload_title.:extension",
  :path => ":rails_root/public/:attachment/:id/:upload_title.:extension"

Тем не менее, сам файл переименован, но document_file_name в базе данных остается прежним.

Я сделал тестовое приложение и загрузил на github здесь

Здесь я создаю новый Upload и прикрепляю файл "Original File Name.txt"

garethrees.co.uk / разное / New.jpg

Здесь вы видите созданный новый Upload с тем же именем файла.

garethrees.co.uk / разное / created.JPG

А также в базе данных document_file_name остается таким же, как было.

garethrees.co.uk / разное / db.JPG

Однако в реальной файловой системе документ переименован в .

garethrees.co.uk / разное / finder.JPG

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

Спасибо

1 Ответ

0 голосов
/ 07 февраля 2011

создайте функцию обратного вызова для after_document_post_process, где вы сами устанавливаете для document_file_name значение title + extension.

...