I’m joined a rails project which have been going for past two months. I saw that the developers are modifying existing migrations to change column types/names? When I ran migrations nothing happens and I get random errors like, method not found. When I deubug and check the database, find that the field names are different and thats the reason errors come.
As per my understanding for each modification of database, we need to create new migration.
Is this behavior of modifying existing migrations acceptable?
Generally, once you check in a migration it should not be modified. For one project I was a part of, we reset the database on a regular basis and so people would modify migrations from time to time rather than create new ones, but it’s not a practice I’m fond of.
So, if you want the default Rails migration behavior to work, no, don’t change a migration that someone may have already used. However, if you are okay with working around the default behavior, it doesn’t matter. Note: if you’re running migrations on production to keep the database up to date, it’s important that you never change a migration that has already been run on production!