O que é uma migration?
De onde a tabela articles veio
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 descreve uma mudança na estrutura do banco.
Versionada, como o código já é
Os cursos de Git trataram de commitar mudanças uma a uma, cada uma sobre a anterior, numa ordem conhecida. Uma migration aplica essa ideia à estrutura do banco. No histórico deste projeto, CreateUsers roda antes de CreateCourses: passos pequenos e ordenados, não um grande script de configuração que não dá para repetir.
db/migrate/20260226000000_create_users.rb
db/migrate/20260226000001_create_courses.rb
db/migrate/20260226000002_create_lessons.rb
Estes são os primeiros arquivos de migration deste projeto, cada um com um prefixo de timestamp. O timestamp decide a ordem em que rodam; a aula 2 mostra de onde ele vem.
Por que não editar o banco à mão?
Mudar uma tabela à mão funciona numa máquina, até o banco de um colega ou um servidor de produção precisar da mesma mudança. Uma migration é um arquivo commitado no git, então qualquer colega ou deploy pode rodá-la e chegar à mesma estrutura, na mesma ordem, sempre.
Pontos-chave
- Uma migration é uma mudança ordenada e versionada na estrutura do banco.
- Os arquivos de migration deste projeto têm prefixo de timestamp e rodam nessa ordem.
- Commitada no git, uma migration deixa qualquer colega ou deploy chegar à mesma estrutura.
Continue com a aula 2
Gerando uma migration
O bin/rails generate migration cria um arquivo com timestamp, e nomes como Create<Tabela> deixam o gerador preencher o corpo.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.