Skip to content
Paperclip File Management Plugin http://www.thoughtbot.com/projects/paperclip
Find file
Pull request Compare This branch is even with greenisus:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
generators/paperclip
lib
tasks
test
.gitignore
LICENSE
README
README.rdoc
Rakefile
init.rb

README.rdoc

Paperclip

Paperclip is intended as an easy file attachment library for ActiveRecord. The intent behind it was to keep setup as easy as possible and to treat files as much like other attributes as possible. This means they aren't saved to their final locations on disk, nor are they deleted if set to nil, until ActiveRecord::Base#save is called. It manages validations based on size and presence, if required. It can transform its assigned image into thumbnails if needed, and the prerequisites are as simple as installing ImageMagick (which, for most modern Unix-based systems, is as easy as installing the right packages). Attached files are saved to the filesystem and referenced in the browser by an easily understandable specification, which has sensible and useful defaults.

See the documentation for the has_attached_file method for options.

Usage

In your model:

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

In your migrations:

class AddAvatarColumnsToUser < ActiveRecord::Migration
  def self.up
    add_paperclip_columns :users, :avatar
  end

  def self.down
    remove_paperclip_columns :users, :avatar
  end
end

or...

class CreateRoleModels < ActiveRecord::Migration
  def self.up
    create_table :role_models do |t|
      # your migration code
      t.paperclip :avatar     # if no argument provided, defaults to 'attachment'
    end
  end

  def self.down
    drop_table :role_models
  end
end

In your edit and new views:

<% form_for :user, @user, :url => user_path, :html => { :multipart => true } do |form| %>
  <%= form.file_field :avatar %>
<% end %>

In your controller:

def create
  @user = User.create( params[:user] )
end

In your show view:

<%= image_tag @user.avatar.url %>
<%= image_tag @user.avatar.url(:medium) %>
<%= image_tag @user.avatar.url(:thumb) %>
Something went wrong with that request. Please try again.