Rails quản lý các migration thông qua các file migration trong db/migration tuy nhiên nó còn quản lý các phiên bản migration thông qua một bảng schema được tạo tự động khi db được tạo.
1. Quản lý thông qua db/migration
- Mỗi file migration được đánh tên <timestamp>_tên_migration. Trong đó timestamp là thời gian mà file migration được tạo
- Các file migration luôn được sắp xếp theo timestamp từ bé tới lớn.
2. Quản lý thông qua bảng schema_migrations
- Mỗi khi chạy một migration thì Rails sẽ add 1 record vào trong bảng schema_migrations lưu lại timestamp của migration vừa được chạy.
- Mỗi khi kéo code mới hoặc thêm migration nó sẽ duyệt bảng schema_migrations để nhận biết migration nào đã được chạy rồi, migration nào chưa được chạy và theo đó chạy các migration còn thiếu.
- Mỗi khi rollback lại migration nó sẽ xóa bản ghi migration trong bảng schema_migrations.