Я создаю небольшое приложение для загрузки простых текстовых файлов с помощью 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, чтобы пользователи могли загружать файлы.
Спасибо