I have a confession to make: when I’m starting out a new project, especially if it’s a small team, I like to edit my migrations.
At the beginning of a project there are always a ton of changes in how models are defined and how they relate to one another. I find it so much easier to edit migrations and keep these initial declarations compact than to write new migrations for every piddling change.
The downside is an increased communications burden—people need to know they need to run
rake db:migrate:reset when migrations change. And, of course, once you’ve got real data in production, you can’t do this.
But at the beginning of a project, I like to edit my migrations.