Ответ 1
Нет, к сожалению, вам нужно удалить индекс вручную из вашей миграции с помощью метода remove_index
.
В Rails 2 удаляется столбец с миграцией Rails, также изменяются/удаляются индексы, связанные с столбцом? Если нет, и вместо этого вам нужно также изменить/удалить каждый индекс вручную, не следует ли его автоматизировать?
Спасибо (от новичков Rails)
Нет, к сожалению, вам нужно удалить индекс вручную из вашей миграции с помощью метода remove_index
.
В Rails 4 индекс автоматически удаляется с удалением столбца.
Чтобы прояснить, внутри миграции синтаксис для удаления индекса с двумя столбцами следующий
remove_index :actions, :column => [:user_id,:action_name]
или по имени, худший вариант с моей точки зрения
remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
Также как осторожность, в то время как 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
в блоке изменений не показало, что столбцы обратимы при откате.
В Rails > 3.2.16 удаление столбца удаляет индекс.
Если вы хотите удалить индекс, вы должны использовать remove_index
, если вы используете remove_column
, он удаляет индекс, но вы не можете запустить rake db: rollback. Как сказал Джим.
remove_column is only reversible if given a type.