【发布时间】:2017-01-04 06:00:57
【问题描述】:
目前使用 Carrierwave,在创建不同版本时上传 foo.png 之类的文件后:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"#{model.class.to_s.underscore}/#{model.id}"
end
version :thumb do
process :resize_to_fit => [500, 500]
end
end
这导致文件被上传为:
thumb_foo.png
foo.png
出于 SEO 的原因,我想将“thumb”移到文件名的末尾。根据他们的docs,我在这里添加了:
def full_filename(for_file)
if parent_name = super(for_file)
extension = File.extname(parent_name)
base_name = parent_name.chomp(extension)
[base_name, version_name].compact.join("_") + extension
end
end
def full_original_filename
parent_name = super
extension = File.extname(parent_name)
base_name = parent_name.chomp(extension)
[base_name, version_name].compact.join("_") + extension
end
文档说这应该会导致:
foo_thumb.png
foo.png
但是,我最终实际上得到了以下结果:
thumb_foo_thumb.png
foo.png
知道我做错了什么吗?
【问题讨论】:
-
你试过这个customize version file names吗?它还将版本移动到文件名的末尾
标签: ruby-on-rails carrierwave fog