Search code examples
ruby-on-rails-4rails-migrations

Removing default value from Rails Migration


I found several similar questions about editing a migration but couldn't figure this one out. I did a rails migration, then opened the migration file and added a default value option to the field. Then ran rake db:migrate. The default value populates as intended. Then a few migrations later, I decided that I wanted to remove the default value option. How do I do that?

If this was the last migration I did, I would use db:rollback and recreate but since was done a few migrations ago, I'm not sure how to fix this.

Appreciate the help.


Solution

  • Create a new migration and use change_column_default.

    http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column_default

    Sets a new default value for a column:

    change_column_default(:suppliers, :qualification, 'new')
    change_column_default(:accounts, :authorized, 1)
    

    Setting the default to nil effectively drops the default:

    change_column_default(:users, :email, nil)