If you want to hold both images and regular files as attachments to a model, additional processing (i.e. creating a thumbnail) can be attached only to images.
Here's the example code to create thumbnails when the uploaded file is an image:
version :thumb, :if => :image? do process :resize_to_limit => [200, 200] end protected def image?(new_file) new_file.content_type.start_with? 'image' end
If you'll use
content_type method make sure to include the
class AttachmentUploader < CarrierWave::Uploader::Base include CarrierWave::MimeTypes # Call method process :set_content_type end
Just a mention, to avoid multiple checking if it is needless in your case, you could make it like as:
def image?(new_file) return model.is_thumbnable unless model.is_thumbnable.nil? model.is_thumbnable = \ begin #your condition goes here and it should return true or false, except nil end end