jkl*_*ina 7 ruby-on-rails ruby-on-rails-3 carrierwave
在我的Rails应用程序中,我想允许用户通过Carrierwave上传图像或非图像文件.目前Carrierwave正在处理和处理图像文件,但遗憾的是它完全丢弃了非图像文件.单个Carrierwave上传器是否有一种干净的方式来处理图像和非图像文件?
我将在下面包含我当前的上传者:
class AssetUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_fill => [300, 300]
end
version :icon do
process :resize_to_fill => [48, 48]
end
def extension_white_list
%w(jpg jpeg gif png pdf doc xls docx xlsx ppt)
end
end
Run Code Online (Sandbox Code Playgroud)
我遇到了这个问题。我用古老的计算机科学解决方案“多级间接”解决了这个问题:一种 Trampoline/thunk 方法,可以根据文件扩展名动态决定是否进行处理。
您可以在这里找到实现:https://gist.github.com/995663
(由于 CarrierWave DSL 的工作方式,在版本块中引入逻辑的简单方法实际上不起作用 - 逻辑需要推迟到调用)
我希望这有帮助。