When starting out a new project, there are lot of changes in models that I find it easy to edit an existing migration & run db:clean
or db:reset
than create a new migration. I do this when app has not hit production which means I can reset/clean database without worries & I am working solo or part of a small team.
But Today, I came across the following advice in Rails Guide saying its not a good idea & discourages editing existing migrations:
Editing existing migrations is not a good idea: you will be creating extra work for yourself and your co-workers and cause major headaches if the existing version of the migration has already been run on production machines. Instead, you should write a new migration that performs the changes you require. Editing a freshly generated migration that has not yet been committed to source control (or, more generally, which has not been propagated beyond your development machine) is relatively harmless.
I want to know:
If you have already run the migration then you cannot just edit the migration and run the migration again: Rails thinks it has already run the migration and so will do nothing when you run rake db:migrate.
You can edit only a migration batch that has a status of Created.
A Rails migration is a tool for changing an application's database schema. Instead of managing SQL scripts, you define database changes in a domain-specific language (DSL). The code is database-independent, so you can easily move your app to a new platform.
If you are working with a team and you committed the migration then NO.
If it is only on your local environment then just create a new migration fixing what you need. You can drop tables\columns and do what you need.
Since you clean the db and reset it, then everyone will be doing the same or they will have issues if they try to migrate.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With