paperclip:确定文件是否在动态配置中具有扩展名

时间:2012-11-14 19:42:54

标签: ruby-on-rails paperclip

我最初的回形针默认配置包含

:url => "/some_path/:basename.:extension"

但是,我上传的所有文件都没有扩展名,在这种情况下,我不想要“。” (在配置中的basename和extension之间)。所以我想做这样的事情:

:url => lambda { |i| "/some_path/:basename#{".:extension" if i.extension}" }

我试过并得到了“无法将Proc转换成字符串”错误,这告诉我回形针不支持动态配置url,就像它对样式和处理器一样。关于我如何做到这一点的任何想法,越少黑客就越好?

1 个答案:

答案 0 :(得分:1)

简短的回答是你替换

:basename.:extension

:filename

更详细的答案是basename,filename和extension都是插值,你可以使用'paperclip / interpolations'中定义的任何插值(在paperclip的lib目录中)或定义你自己的插值。

例如:

Paperclip.interpolates(:temperature) do |attachment, style|
  attachment.instance.city.temperature(:today)
end

当然,假设has_attached_filebelongs_to :city的模型以及您的城市对象知道今天的温度。