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
endTipos de colunas
Os tipos comuns de colunas correspondem a tipos de banco de dados:
stringtexto curto.texttexto longo.integer,float,decimalnúmeros.booleanverdadeiro/falso.datetime,datevalores de data e hora.
create_table :products do |t|
t.string :title
t.text :description
t.decimal :price
t.boolean :active
t.timestamps
endExecutando 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
endRevertendo
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
endMigraçõ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_columneadd_indexdefinem a estrutura das tabelas.db:migrateaplica;db:rollbackreverte.- Use
up/downpara 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.