Migrations ActiveRecord
O curso trata das migrations do ActiveRecord: arquivos ordenados e versionados que descrevem cada mudança na estrutura do banco. Mostra como o bin/rails generate migration cria um arquivo com timestamp e como esse timestamp define a ordem. Explica o método change, o create_table, null: false e t.timestamps, além do número de versão em Migration[8.0]. Depois aborda o db:migrate para aplicar migrations pendentes, o db/schema.rb como fotografia gerada e o db:rollback para desfazer o último passo. A aula final acompanha uma migration CreateArticles do arquivo à tabela.
O que você vai aprender
- ✓O que é uma migration e por que ela é commitada no git
- ✓Gerar migrations e como o timestamp define a ordem
- ✓Escrever o método change com create_table e opções de coluna
- ✓Aplicar migrations pendentes com db:migrate e conferir o db:migrate:status
- ✓Ler o db/schema.rb e carregá-lo com db:schema:load
- ✓Desfazer a última migration com db:rollback
O que é uma migration?
Todo curso desde ActiveRecord: introdução ao model supôs que uma tabela articles existia para Article.find, .create e .all. Nenhum explicou de onde ela veio, nem como ganharia uma coluna depois sem quebrar as linhas salvas. Uma migration preenche essa lacuna: uma instrução ordenada e versionada que…
Ler a aula completa grátis →Currículo
7 aulasO que é uma migration?
Uma migration é uma mudança ordenada e versionada na estrutura do banco, commitada no git para todos chegarem ao mesmo lugar.
Gerando uma migration
O bin/rails generate migration cria um arquivo com timestamp, e nomes como Create<Tabela> deixam o gerador preencher o corpo.
def change: um método, duas direções
O método change usa create_table, null: false e t.timestamps, e o Rails reverte sozinho as operações comuns.
bin/rails db:migrate: aplicando o que está pendente
O bin/rails db:migrate aplica só as migrations pendentes, pela ordem do timestamp, e o db:migrate:status mostra quais rodaram.
schema.rb: o resultado, não a fonte
O db/schema.rb é uma fotografia gerada cujo version marca a última migration aplicada, e o db:schema:load a carrega mais rápido.
bin/rails db:rollback: desfazendo o último passo
O bin/rails db:rollback desfaz a migration mais recente rodando-a ao contrário, útil para corrigir um erro logo depois.
Juntando tudo: do arquivo à tabela
Uma migration CreateArticles é acompanhada da geração até a tabela, reunindo nome, change, db:migrate, schema.rb e rollback.