O Ruby on Rails é um framework popular para desenvolvimento web que oferece várias ferramentas para simplificar a criação de aplicações. Uma das funcionalidades mais comuns em muitas plataformas é o upload de arquivos. Para isso, o Paperclip é uma excelente gem que facilita a integração de uploads de arquivos em aplicações Rails. Neste artigo, vamos explorar como configurar e usar o Paperclip para permitir uploads de arquivos em seu sistema.
1. Adicionando o Paperclip ao seu Projeto
Para começar, você precisa adicionar a gem Paperclip ao seu Gemfile:
gem 'paperclip', '~> 6.1'
Em seguida, execute o comando para instalar a gem:
bundle install
2. Configurando o Modelo para o Upload de Arquivos
Com a gem instalada, o próximo passo é configurar o modelo onde o arquivo será armazenado. Por exemplo, se você estiver criando um sistema de upload para usuários, adicione o campo avatar
ao modelo User
:
rails generate paperclip user avatar
Isso criará uma migração que adiciona os campos necessários para armazenar o arquivo. Execute a migração:
rails db:migrate
3. Definindo o Upload no Modelo
Agora, abra o modelo User
e defina o upload do arquivo utilizando o Paperclip. No arquivo user.rb
, adicione:
class User < ApplicationRecord
has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }
validates_attachment_content_type :avatar, content_type: ["image/jpg", "image/jpeg", "image/png"]
end
Aqui, estamos configurando o Paperclip para gerar duas versões da imagem: medium
e thumb
. Também estamos validando o tipo de conteúdo para garantir que apenas imagens com formatos JPG e PNG sejam aceitas.
4. Permitindo o Upload no Formulário
No formulário de criação ou edição do usuário, você pode permitir o upload de arquivos com o seguinte código no arquivo de visualização (por exemplo, app/views/users/_form.html.erb
):
<%= form_for @user do |f| %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
<%= f.submit %>
<% end %>
Este formulário permite que os usuários escolham um arquivo de imagem para enviar.
5. Exibindo o Arquivo no Frontend
Após o upload do arquivo, você pode exibir a imagem no seu aplicativo. Para isso, no arquivo de visualização, use o seguinte código para mostrar o avatar do usuário:
<%= image_tag @user.avatar.url(:medium) %>
Isso irá exibir a versão “medium” da imagem. Se desejar exibir a versão “thumb”, basta substituir :medium
por :thumb
.
6. Considerações Finais
O Paperclip facilita muito a implementação de uploads de arquivos em Ruby on Rails. Ele oferece suporte a vários tipos de arquivos, além de permitir o dimensionamento de imagens e outras manipulações. Embora o Paperclip seja uma excelente opção para projetos menores ou existentes, vale notar que ele está em descontinuação, e alternativas como o ActiveStorage (incluído nativamente no Rails 5.2 e versões posteriores) podem ser consideradas para novos projetos.
Se você está em busca de uma solução prática e bem documentada para upload de arquivos em Rails, o Paperclip continua sendo uma excelente escolha para muitos casos.