CarrierWave的混合文件类型

tob*_*yer 9 image carrierwave ruby-on-rails-3.1

我有一个CarrierWave上传器,可以接受各种文件类型.有些是图像类型(例如jpg,png),有些则不是.

我想创建一个中等版本的上传文件

version :medium do
  process :resize_to_fit => [300, 300]
end
Run Code Online (Sandbox Code Playgroud)

由于这仅适用于图像文件,如何区分图像和其他类型,并省略非图像文件的大小调整?

目前,CarrierWave尝试处理文件,无论其类型如何,如果文件不是图像,都会导致MiniMagick处理错误.

Ser*_*nin 14

根据Carrierwave Docs,您可以进行条件处理:

version :medium, :if => :image? do
  process :resize_to_fit => [300, 300]
end

protected

def image?(new_file)
  new_file.content_type.include? 'image'
end
Run Code Online (Sandbox Code Playgroud)

实际上我在这里找到更完整的答案