Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Conditionally resizing images

uberllama edited this page · 1 revision

A common case is to have an asset model that accepts multiple file types. In this case, you only want to apply resize operations if the uploaded file is an image.

Asset.rb

# Table name: assets
#
#  id                  :integer(4)      not null, primary key
#  upload_file_name    :string(255)     not null
#  upload_content_type :string(255)
#  upload_file_size    :integer(4)      not null
#  upload_updated_at   :datetime

has_attached_file :upload, :styles => {:thumb => '100x100#'}
before_post_process :resize_images

# Helper method to determine whether or not an attachment is an image.
def image?
  upload_content_type =~ %r{^(image|(x-)?application)/(bmp|gif|jpeg|jpg|pjpeg|png|x-png)$}
end

private

def resize_images
  return false unless image?
end

_asset.html.erb

<% if asset.image? %>
  <%= image_tag asset.download_url(:thumb) %>
<% else %>
  <%= asset.upload_file_name %>
<% end %>
Something went wrong with that request. Please try again.