Будет ли удаление столбца с миграцией Rails удалять индексы, связанные со столбцом
в Rails 2 Удаление столбца с миграцией Rails также изменит / удалит индексы, связанные с столбцом? Если нет, и вместо этого вы также должны изменить/удалить каждый индекс вручную, не следует ли вместо этого автоматизировать?
Спасибо (от новичка Rails)
6 ответов
нет, к сожалению, вам нужно удалить индекс вручную из миграции с помощью remove_index
метод.
чтобы уточнить, внутри миграции синтаксис для удаления индекса столбца 2 Следующий
remove_index :actions, :column => [:user_id,:action_name]
или по имени, хуже вариант, с моей точки зрения
remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
как раз как предосторежение, пока рельсы 4 будет удалить индекс для вас, если вы удалите столбец, вы должны указать тип столбца. Без типа столбца выполняется rake db:rollback
вернутся
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
remove_column is only reversible if given a type.
я экспериментировал с удалением столбцов внешнего ключа, которые были индексированы. Даже указание index: true
в блоке изменений, похоже, не делали столбцы обратимыми при откате.
Если вы хотите удалить индекс, вы должны использовать remove_index
, Если вы используете remove_column
Он удаляет индекс, но вы не можете запустить rake db:rollback. Как упоминал Джим.
remove_column is only reversible if given a type.