在本地一个项目中我使用了 CarrierWave 进行文件处理,同时设置了一些小尺寸的 version
ImageUploader 部分代码
class ProductImageUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :s_thumb do
process :resize_to_fit => [100, 100]
end
def filename
if super.present?
@name ||= Digest::MD5.hexdigest(current_path)
"#{Time.now.year}/#{@name}.#{file.extension.downcase}"
end
end
end
上传一张图片后,会有两个版本的图片,大家注意一下,这里的两个文件的图片名不相同。
33
├── 2015
│ └── 11a542587b175124adaeee5ab03f0b4b.png
└── s_thumb_2015
└── 79c877b6948bedb1377396199c33d1c7.png
2 directories, 2 files
irb(main):017:0> Image.find(33).file.url
=> "/uploads/image/file/33/2015/11a542587b175124adaeee5ab03f0b4b.png"
irb(main):018:0> Image.find(33).file.s_thumb.url
=> "/uploads/image/file/33/s_thumb_2015/11a542587b175124adaeee5ab03f0b4b.png"
当我在代码中使用时,CarrierWave 给出的文件名是相同的,导致我没办法找到图片。 这个问题不知道出在哪里,也不知道怎么 Google 关键字