Every repository with this icon (
Every repository with this icon (
tree 6921fd4c41eb33ff2015764923b502e8c1fe74c8
parent c03d1aa9a1198a3ea8e0d378b4b0388fc2ce8a60
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Wed May 14 23:31:01 -0700 2008 | [krobertson] |
| |
LICENSE | Wed May 14 23:31:01 -0700 2008 | [krobertson] |
| |
README.textile | Thu May 15 14:35:29 -0700 2008 | [krobertson] |
| |
Rakefile | Thu May 15 00:07:34 -0700 2008 | [krobertson] |
| |
init.rb | Mon Apr 21 17:48:02 -0700 2008 | [krobertson] |
| |
lib/ | Thu May 15 14:35:29 -0700 2008 | [krobertson] |
| |
tasks/ | Wed May 14 23:51:28 -0700 2008 | [krobertson] |
| |
test/ | Thu May 15 14:35:29 -0700 2008 | [krobertson] |
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.
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 => "300x300>",
:thumb => "100x100>" }
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




