我正在制作一个小应用程序,使用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 here
在这里,我创建了一个新的Upload
并附加了文件“Original File Name.txt
”
garethrees.co.uk/misc/new.JPG
在这里,您会看到创建的新Upload
,仍然使用原始文件名。
garethrees.co.uk/misc/created.JPG
同样在数据库中,document_file_name
仍然保持原样。
garethrees.co.uk/misc/db.JPG
但是,在实际的文件系统中,文档 重命名。
garethrees.co.uk/misc/finder.JPG
我确实需要两个记录匹配,因为我需要使用Paperclip路径才能让用户下载文件。
由于
答案 0 :(得分:0)
为after_document_post_process创建一个回调函数,在其中将document_file_name自己设置为title + extension。