我尝试为每种风格设置不同的网址定义,例如:
has_attached_file :asset, styles: {
original: "1920x1920>",
cropped: {:geometry => "200x200#", :processors => [:cropper] }
},
urls: {
original: "/images/:hash_path/:filename",
cropped: "/images/:hash_path/cropped/:filename"`
}
目标是根据MD5校验和(指纹)仅存储相同的图像一次,但使用当前样式的校验和(如拇指,裁剪)而不是原始文件。
示例:10名学生上传了相同的学校照片和选定的脸部区域,用于创建头像。大型学校照片应该只保存一次,但保留每个头像是必要的。
到目前为止,我还没有找到一种简单的方法,如何使用Paperclip,它现在能够为原始图像保存指纹。我很好奇是否有办法如何定义每个风格的网址?这尤其可以解决这个问题。
感谢您提供任何其他建议。
修改:按/:hash_path
我的意思是某种插值,如此处所提到的http://jonathanng.com/ruby-on-rails/getting-around-ext3-inode-limitations-using-md5-file-paths-and-paperclip-interpolations/
答案 0 :(得分:1)
要继续进行的一项建议是使用插值https://github.com/thoughtbot/paperclip/wiki/Interpolations
将网址设置为:
:url => "/attachments/:hash_path/:basename_:style.:extension",
然后在插值中:
Paperclip.interpolates :hash_path do |attachment, style|
hash_path = "whatever_#{style}" # generate hash path here
end
这应该将任何hash_path
插值返回到url替换:hash_path
键。