Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
DataMapper port of the Paperclip plugin by Thoughtbot
tag: 2.1.2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
tasks
test
.gitignore
LICENSE
README.textile
Rakefile
init.rb

README.textile

DataMapper Paperclip

DM-Paperclip is a port of Thoughtbot’s Paperclip plugin to work with DataMapper 0.9. This plugin is fully compatible with
the original ActiveRecord-oriented Paperclip. You could take an existing ActiveRecord database and use it with DataMapper.
The module also includes updates validation handling and automatic including of the necessary ‘property’ fields into
your model.

To use it within your models, you need to ensure the three database fields are included. They are {name}_file_name,
{name}_content_type, and {name}_file_size. The first two are strings, the final file_size column is an integer. So
if your user model has an avatar field, then you would add avatar_file_name, avatar_content_type, and avatar_file
size.

As with the original Paperclip plugin, it allows processing of thumbnails at the time the record is saved though ImageMagick.
It processes the thumbnails through the command-line applications instead of using RMagick.

See the documentation for the has_attached_file method for options.

Code

The code DM-Paperclip is available at Github:

git clone git://github.com/krobertson/paperclip.git

It is regularly updated to keep in sync with the latest from Thoughtbot.

Releases are tagged within the repository and versioned the same as the original model. You can also get the latest release
packaged as a gem through Rubyforge:

sudo gem install dm-paperclip

Usage

In your model:

class User include DataMapper::Resource include Paperclip::Resource property :id, Integer, :serial => true property :username, String has_attached_file :avatar, :styles => { :medium => “300×300>”, :thumb => “100×100>” } end

Your database will need to add three columns, avatar_file_name (varchar), avatar_content_type (varchar), and
avatar_file_size (integer). You can either add these manually, auto-migrate, or use the following migration:

migration( 1, :add_user_paperclip_fields ) do up do modify_table :users do add_column :avatar_file_name, “varchar(255)” add_column :avatar_content_type, “varchar(255)” add_column :avatar_file_size, “integer” end end down do modify_table :users do drop_columns :avatar_file_name, :avatar_content_type, :avatar_file_size end end end

In your edit and new views:

<% form_for @user, { :action => url(:user), :multipart => true } do %> <%= file_field :name => ‘avatar’ %> <% end %>

In your controller:

def create … @user.avatar = params[:avatar] end

In your show view:

<%= image_tag @user.avatar.url %> <%= image_tag @user.avatar.url(:medium) %> <%= image_tag @user.avatar.url(:thumb) %>

The following validations are available:

validates_attachment_presence :avatar validates_attachment_content_type :avatar, :content_type => “image/png” validates_attachment_size :avatar, :in => 1..10240 validates_attachment_thumbnails :avatar

In order to use validations, you must have loaded the ‘dm-validations’ gem into your app
(available as a part of dm-more). If the gem isn’t loaded before DM-Paperclip is loaded,
the validation methods will be excluded. You will also need to include DataMapper::Validate
into your mode:

class User include DataMapper::Resource include DataMapper::Validate include Paperclip::Resource property :id, Integer, :serial => true property :username, String has_attached_file :avatar, :styles => { :medium => “300×300>”, :thumb => “100×100>” } validates_attachment_size :avatar, :in => 1..5120 end
Something went wrong with that request. Please try again.