Удаление значения по умолчанию из Rails Migration

Я нашел несколько аналогичных вопросов по редактированию миграции, но не смог понять это. Я выполнил миграцию рельсов, затем открыл файл миграции и добавил значение поля по умолчанию в поле. Затем запустил rake db: migrate. Значение по умолчанию заполняется по назначению. Затем несколько миграций я решил, что хочу удалить значение по умолчанию. Как мне это сделать?

Если это была последняя миграция, я использовал db: rollback и recreate, но с тех пор, как было сделано несколько переходов назад, я не знаю, как это исправить.

Оцените справку.

Ответ 1

Создайте новую миграцию и используйте change_column_default.

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

Устанавливает новое значение по умолчанию для столбца:

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

Установка значения по умолчанию для nil эффективно снижает значение по умолчанию:

change_column_default(:users, :email, nil)

Ответ 2

Рельсы 5+

Передача хеша, содержащего :from и :to, сделает это изменение обратимой миграцией:

change_column_default(:posts, :state, from: nil, to: "draft")

Поэтому я бы рекомендовал использовать этот формат там, где это возможно.