Удаление значения по умолчанию из 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")
Поэтому я бы рекомендовал использовать этот формат там, где это возможно.