文件名db /实际不匹配的回形插值

时间:2011-02-06 16:05:06

标签: ruby-on-rails paperclip

我正在制作一个小应用程序,使用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路径才能让用户下载文件。

由于

1 个答案:

答案 0 :(得分:0)

为after_document_post_process创建一个回调函数,在其中将document_file_name自己设置为title + extension。