Skip to content

Instantly share code, notes, and snippets.

@hidenowt
Created March 18, 2009 20:10
Show Gist options
  • Save hidenowt/81362 to your computer and use it in GitHub Desktop.
Save hidenowt/81362 to your computer and use it in GitHub Desktop.
Bem, irei falar sobre o plugin paperclip para upload de arquivo, mas aqui irei da ênfase ao upload de imagens.
Vamos iniciar o nosso tutorial?
O que iremos precisar?
Ter o Rails instalado, e ter o imagemagick, caso não tenha ambos na sua maquina instale. Mas porque o imagemagick? o plugin paperclip utiliza o programa imagemagick para fazer modificações/trabalhar com as imagens que você vai submeter.
O paperclip por padrão ele requerer 4 campos/colunas no model. São eles:
- image_file_name
- image_content_type
- image_file_size
- image_updated_at
Se você for criar um novo model você pode incluir esses campos na migrate:
t.column :image_file_name, :string
t.column :image_content_type, :string
t.column :image_file_size, :integer
t.column :image_updated_at, :timestamp
Ou se preferir basta digitar:
$ script/generate paperclip modelo coluna
#exemplo
$ script/generate paperclip user photo
$ rake db:migrate
#validar a presença da foto
validates_attachment_presence :photo
class Bisk < ActiveRecord::Base
cattr_reader :per_page
@@per_page = 2
#relacionamentos
belongs_to :category
#validações
validates_presence_of :ordinary_name
validates_presence_of :scientific_name
validates_presence_of :category_id
#paperclip upload
has_attached_file :photo,
#O style diz o tamanho das imagens que será geradas
:styles => { :small=> ["112x84>", :png], :large => ["400x300>", :png] },
#O path irá salvar as imagens em sua_app/public/images/bisk/photo/1/thumb_originalfilename.jpg
:path => ":rails_root/public/images/:class/:attachment/:id/:style_:basename.:extension",
#A url irá ficar: localhost:3000/user/photo/1/thumb_originalfilename.jpg
:url => "/images/:class/:attachment/:id/:style_:basename.:extension",
#A opção rounded serve para arredondar as bordas
:rounded => 8,
#Bem se você não fizer o upload de nenhuma imagem ele seta uma imagem padrão
:default_url => "/images/rails.png"
#O content_type diz o tipo de extensão que pode ser feito o upload
validates_attachment_content_type :photo, :content_type => ["image/bmp", "image/x-png", "image/pjpeg", "image/jpg", "image/jpeg", "image/png", "image/gif"]
#Diz o tamanho do arquivo onde o maximo é 1 megabyte
validates_attachment_size :photo, :less_than => 1.megabyte
before_validation :clear_photo
def delete_photo=(value)
@delete_photo = !value.to_i.zero?
end
def delete_photo
!!@delete_photo
end
alias_method :delete_photo? , :delete_photo
private
# Later in the model
def clear_photo
self.photo = nil if self.delete_photo? && !self.photo.dirty?
true
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment