Created
March 18, 2009 20:10
-
-
Save hidenowt/81362 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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