如何子类化Carrierwave上传器?

时间:2012-12-06 01:28:17

标签: ruby-on-rails carrierwave

我有这两个上传者: https://gist.github.com/4180193

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper
  storage :file

  def store_dir
    "images/#{model.class.to_s.underscore}/#{model.slug}"
  end

  def default_url
    asset_path("fallback/" + [version_name, "image.jpg"].compact.join('_'))
  end

  def self.get_width(span)
    grid_column_width = 110
    grid_gutter_width = 10
    return grid_column_width if span <= 0 or span > 8
    (span*grid_column_width) + ((span>1 ? span-1 : 0)*grid_gutter_width)
  end

  def self.get_height(width)
    ratio = 180/150
    width/ratio
  end

  def self.dims(span)
    width = get_width(span)
    [width, get_height(width)]
  end

  version :xlarge do
    process :resize_to_limit => dims(8)
    process :convert => :jpg
  end

  version :large do
    process :resize_to_limit => dims(4)
    process :convert => :jpg
  end

  version :medium do
    process :resize_to_limit => dims(2)
    process :convert => :jpg
  end

  version :small do
    process :resize_to_limit => dims(1)
    process :convert => :jpg
  end

  version :xsmall do
    process :resize_to_limit => dims(0.5)
    process :convert => :jpg
  end

  def extension_white_list
    %w(jpg jpeg gif png tiff tif)
  end

  def filename
    "image.jpg" if original_filename
  end

end

class AmbianceImageUploader < ImageUploader
  version :header do
    process :resize_to_fill => [get_width(6), 350+10]
    process :convert => :jpg
  end

  def filename
    "ambiance.jpg" if original_filename
  end

end

但是,当我使用AmbianceUploader上传内容时,将不会创建在ImageUploader中定义的版本。我怎么会来这个?

PS:

[2] pry(main)> AmbianceImageUploader.versions
=> {:xlarge=>{:uploader=>#<Class:0x007fde61b5b520>, :options=>{}},
 :large=>{:uploader=>#<Class:0x007fde61f90500>, :options=>{}},
 :medium=>{:uploader=>#<Class:0x007fde5ee166c8>, :options=>{}},
 :small=>{:uploader=>#<Class:0x007fde5ec492c8>, :options=>{}},
 :xsmall=>{:uploader=>#<Class:0x007fde5d8687b8>, :options=>{}},
 :header=>{:uploader=>#<Class:0x007fde61ac1808>, :options=>{}}}

因此版本在那里,出于某种原因他们只是没有得到照顾......

0 个答案:

没有答案