Удалив столбец с миграцией Rails, удалите индексы, связанные с столбцом
В Rails 2 удаляется столбец с миграцией Rails, также изменяются/удаляются индексы, связанные с столбцом? Если нет, и вместо этого вам нужно также изменить/удалить каждый индекс вручную, не следует ли его автоматизировать?
Спасибо (от новичков Rails)
Ответ 1
Нет, к сожалению, вам нужно удалить индекс вручную из вашей миграции с помощью метода remove_index.
Ответ 2
В Rails 4 индекс автоматически удаляется с удалением столбца.
Ответ 3
Чтобы прояснить, внутри миграции синтаксис для удаления индекса с двумя столбцами следующий
Также как осторожность, в то время как Rails 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 в блоке изменений не показало, что столбцы обратимы при откате.
Ответ 5
В Rails > 3.2.16 удаление столбца удаляет индекс.
Ответ 6
Если вы хотите удалить индекс, вы должны использовать remove_index, если вы используете remove_column, он удаляет индекс, но вы не можете запустить rake db: rollback. Как сказал Джим.