Ruby on Rails é um framework poderoso para aplicações web, muito elogiado pela simplicidade e pela filosofia de convenção sobre configuração. Mas, por trás dessa simplicidade, há um conjunto robusto de ferramentas feitas para facilitar a vida dos desenvolvedores.
Uma dessas ferramentas é o comando rails generate migration. Com ele, você manipula o schema do banco de dados de forma eficiente, mantendo a estrutura do banco da sua aplicação em sincronia com o código. Neste guia, exploramos a fundo as poderosas opções de linha de comando disponíveis no rails generate migration.
Primeiros passos com migrations
Migrations são uma forma de modificar o schema do banco de dados ao longo do tempo de maneira consistente e organizada. Pense nelas como um controle de versão para o seu banco de dados.
Para um guia completo sobre o básico, confira nosso tutorial Como gerar uma migration no Rails.
Para criar uma migration simples, você usaria:
rails generate migration AddFieldnameToTablename fieldname:string
Esse comando gera um arquivo de migration no diretório db/migrate.
Estrutura básica de um arquivo de migration
Um arquivo de migration normalmente se parece com isto:
class AddFieldnameToTablename < ActiveRecord::Migration[6.0]
def change
add_column :tablename, :fieldname, :string
end
end
Executando migrations
Para aplicar sua migration, execute:
rails db:migrate
Isso executa o método change de cada novo arquivo de migration, atualizando o schema do banco de dados.
Opções avançadas de linha de comando
O comando rails generate migration oferece diversas opções que permitem realizar operações complexas no banco de dados com facilidade. A seguir, exploramos algumas delas.
1. Especificando a versão do Rails
Ao trabalhar com migrations no Rails, é importante entender que a versão da migration é determinada automaticamente pela versão da sua aplicação Rails. A classe da migration herda de ActiveRecord::Migration com o número de versão adequado, de acordo com a sua versão do Rails.
2. Migrations reversíveis
Para alterações que não são reversíveis automaticamente, você pode definir os métodos up e down:
class AddDetailsToUsers < ActiveRecord::Migration[6.0]
def up
add_column :users, :details, :text
end
def down
remove_column :users, :details
end
end
Usar os métodos up e down dá controle total sobre como as migrations são executadas e revertidas.
3. Gerando índices automaticamente
Adicionar um índice a uma coluna é uma necessidade comum para melhorar o desempenho do banco de dados. Use o modificador index para isso.
Para informações mais detalhadas sobre índices, veja nosso guia Rails Migration: sintaxe de add index.
rails generate migration AddUserIdToPosts user_id:integer:index
Esse comando cria uma migration que adiciona um campo inteiro chamado user_id à tabela posts e gera automaticamente um índice para ele.
4. Adicionando referências e chaves estrangeiras
Criar uma associação entre tabelas geralmente envolve adicionar chaves estrangeiras. A opção references simplifica isso:
rails generate migration AddCategoryRefToProducts category:references
Esse comando adiciona uma coluna category_id à tabela products e cria automaticamente um índice para ela. Ele também configura uma constraint de chave estrangeira.
Saiba mais sobre como trabalhar com chaves estrangeiras no nosso guia Rails Migration Foreign Key.
Arquivo de migration esperado:
class AddCategoryRefToProducts < ActiveRecord::Migration[6.0]
def change
add_reference :products, :category, foreign_key: true
end
end
5. Renomeando colunas e tabelas
Para renomear colunas ou tabelas, o Rails oferece métodos nativos:
rails generate migration RenameDescriptionInProducts
Depois, edite manualmente o arquivo gerado:
class RenameDescriptionInProducts < ActiveRecord::Migration[6.0]
def change
rename_column :products, :description, :product_description
end
end
Para renomear a tabela inteira:
class RenameOldTableToNewTable < ActiveRecord::Migration[6.0]
def change
rename_table :old_table, :new_table
end
end
Conclusão
O comando rails generate migration é uma ferramenta poderosa do ecossistema Rails que permite alterações no banco de dados precisas, escaláveis e fáceis de manter. Aproveitando essas opções avançadas de linha de comando, você turbina seus scripts de migration e garante que suas aplicações Rails sejam robustas e performáticas.
Recursos relacionados
Explore estes tutoriais relacionados sobre migrations no Rails:
- Como usar “rails g migration add column” no Rails
- Rails Migration: remover coluna
- Rails Migration: renomear coluna
- Rails Generate Migration: criar tabela
- Tipos de dados em migrations do Rails
- Rollback de migrations no Rails
Na próxima vez que você alterar o schema do seu banco de dados, pense em quais opções vão agilizar melhor seu processo de desenvolvimento. Bom código!
Beekeeper Studio é um cliente de banco de dados gratuito e open source
A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit
O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários dizem sobre o Beekeeper Studio
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com banco de dados agradável de novo."
"Já testei muitas GUIs de banco de dados, mas o Beekeeper atinge o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."