No último podcast mencionei minha escolha pelo Paperclip como meu plugin preferido para upload de arquivos. Depois disso algumas pessoas tem me perguntado porque usá-lo, já que o attachment_fu seria a opção mais conhecida.
Durante muito tempo usei o attachment_fu para esta função, mas em um projeto recente da Surgeworks optei por testar o Paperclip e depois disso acabei adotando-o como meu plugin padrão para uploads. Confesso que de inicio o grande motivo para experimentar o novo plugin foi por ele ter sido criado pela thoughtbot, o mesmo time que criou o Shoulda (que não estou usando mais, mas é uma outra história que vou explicar em um outro post), e como os caras são bons e tem criado inúmeros projetos interessantes, resolvi dar uma chance.
Mas foram alguns detalhes que me chamaram a atenção, como o fato de você não precisar de uma tabela extra no banco de dados para armazenar o caminho dos arquivos, a forma simplificada que ele oferece para se acessar e configurar o tamanho das fotos enviadas para o servidor, a macro de teste preparada para o Shoulda, a facilidade para configurar o acesso ao Amazon S3, entre outros detalhes que valorizam o plugin.
Enfim, não existe um grande motivo que chegue a desvalorizar o famoso attachment_fu ou torná-lo obsoleto. São apenas alguns pequenos detalhes que me conquistaram, só isso. É puramente uma questão de preferência pessoal.
Não importa qual plugin de upload você use, só não esqueça do :multipart => true na construção do formulário!
Usando o Paperclip em 3 passos
- Instale o plugin em seu projeto Rails:
./script/plugin install git://github.com/thoughtbot/paperclip.git
- Adicione três colunas na tabela que armazenará os dados dos arquivos:
end
- Adicione uma linha no modelo com as configurações desejadas (tive de dividir em mais linhas para caber no blog):
end
Leve ao forno e sirva à vontade!
No exemplo acima acabamos de adicionar um avatar (a famosa fotinha) para os usuários. Para recuperar a foto enviada pelo usuário, use:
O attachment_fu também não é tão diferente disso, mas gosto mais do Papeclip. Apenas para fechar o artigo, um bônus! Para testar se o Paperclip está funcionando você pode pegar a macro para Shoulda, e depois adicionar uma linha ao teste do modelo:
end
Excelsior!