Removing default value from Rails Migration

Moosa picture Moosa · Aug 18, 2014 · Viewed 14k times · Source

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.

Answer

sevenseacat picture sevenseacat · Aug 18, 2014

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)