🧚 Escute! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
22 de abril de 2025 Por Matthew Rathbone

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.

Explore estes tutoriais relacionados sobre 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.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

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."
— Alex K., desenvolvedor de banco de dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper atinge o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., engenheira full stack

Pronto para melhorar seu fluxo de trabalho com SQL?

download Baixar grátis