Un jour, une gem

30/01/2012

Lundi c'est Paperclip

gem install paperclip

L’upload tranquille

Il peut arriver dans un projet, on ait besoin de faire de l’upload de fichier. Parfois on écrit soit-même un petit script. Mais ça, c’est pour ceux qui ne connaissent pas Paperclip !

Paperclip marche comme la plupart des gems. C’est-à-dire que l’on commence par l’ajouter à notre gemfile. Voici un exemple où on veut ajouter des images aux utilisateurs :

Model

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

Une migration 

class AddAvatarColumnsToUser < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.has_attached_file :avatar
    end
  end

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

On ajoute le formulaire à la vue

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

Afficher l’image

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

La suite et les autres options de Paperclip — créer un pré-processeur, définir l’organisation des fichiers sauvegardés etc. dans les liens utiles :