0Pricing
Ruby Academy · Aula

Migrações

Evolua o esquema.

Migrações é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.

O que é uma migração?

Uma migração é um arquivo Ruby versionado que descreve uma alteração no esquema do banco de dados, como criar uma tabela ou adicionar uma coluna.

  • As migrações são código, portanto ficam no controle de versão.
  • Todas as pessoas da equipe aplicam as mesmas alterações na mesma ordem.
  • Você nunca edita o banco de dados manualmente.

Gerando uma migração

O Rails gera arquivos de migração para você. Por exemplo, rails generate migration CreateUsers cria um arquivo com marca temporal em db/migrate/. A marca temporal determina a ordem em que as migrações são executadas.

Criando uma tabela

Uma migração define um método change. create_table cria uma tabela; t.timestamps adiciona created_at e updated_at automaticamente.

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps
    end
  end
end

Tipos de colunas

Os tipos comuns de colunas correspondem a tipos de banco de dados:

  • string texto curto.
  • text texto longo.
  • integer, float, decimal números.
  • boolean verdadeiro/falso.
  • datetime, date valores de data e hora.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Executando migrações

rails db:migrate aplica todas as migrações pendentes e atualiza schema.rb. O Rails registra quais migrações foram executadas em uma tabela schema_migrations, para que cada uma seja executada apenas uma vez.

Adicionando uma coluna

Para ampliar uma tabela existente, gere uma migração e use add_column. Você especifica a tabela, o nome da coluna, o tipo e as opções.

class AddAgeToUsers < ActiveRecord::Migration[7.1]
  def change
    add_column :users, :age, :integer, default: 0
  end
end

Revertendo

rails db:rollback desfaz a última migração. O Rails reverte automaticamente um método change quando as operações são reversíveis, como add_column ou create_table.

Alterações irreversíveis

Algumas operações não podem ser revertidas automaticamente, como executar SQL bruto ou remover uma coluna que contém dados. Nesses casos, defina métodos up e down explícitos para que o Rails saiba como desfazer a alteração.

class ChangeData < ActiveRecord::Migration[7.1]
  def up
    execute "UPDATE users SET active = TRUE"
  end

  def down
    execute "UPDATE users SET active = FALSE"
  end
end

Índices

Adicione um índice para acelerar as buscas em uma coluna consultada com frequência, como uma chave estrangeira ou um e-mail usado para iniciar sessão. Use unique: true para também impor a exclusividade no nível do banco de dados.

class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
  def change
    add_index :users, :email, unique: true
  end
end

Migrações versus schema.rb

As migrações são o histórico das alterações; schema.rb é o instantâneo atual. Novos desenvolvedores podem executar rails db:schema:load para criar o banco de dados instantaneamente a partir do instantâneo, em vez de reaplicar cada migração.

Boas práticas

Mantenha as migrações seguras:

  • Nunca edite uma migração que já tenha sido executada em ambientes compartilhados; escreva uma nova.
  • Mantenha cada migração concentrada em uma única alteração.
  • Adicione restrições no nível do banco de dados (null: false, índices) para garantir a integridade.

Verificação rápida

Teste sua compreensão das migrações.

Recapitulação: migrações

Você aprendeu a evoluir o esquema com segurança:

  • As migrações são alterações de esquema versionadas e confirmadas no controle de versão.
  • create_table, add_column e add_index definem a estrutura das tabelas.
  • db:migrate aplica; db:rollback reverte.
  • Use up/down para alterações irreversíveis.
  • schema.rb é o instantâneo atual.

Em seguida, conectaremos os modelos com associações.

Perguntas Frequentes

A aula “Migrações” é grátis?

Sim — o texto completo de “Migrações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.

O que vou aprender em “Migrações”?

Evolua o esquema. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Ruby Academy?

Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Migrações”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Ruby Academy?

Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do Active Record
  2. Migrações
  3. Associações
  4. Validações e consultas
← Voltar para Ruby Academy