10
Я создал таблицу и добавил к ней индекс. Во второй миграции я переименовал таблицу. Будет ли индекс продолжать работать?Rails Migration: индексы на переименованной таблице
Я создал таблицу и добавил к ней индекс. Во второй миграции я переименовал таблицу. Будет ли индекс продолжать работать?Rails Migration: индексы на переименованной таблице
Нет, вам нужно позаботиться о индексах себя, так как индекс основан на имени таблицы. Например:
remove_index :old_table_name, :column_name
rename_table :old_table_name, :new_table_name
add_index :new_table_name, :column_name
В Rails 4.0, когда столбец или таблица переименовывается соответствующие индексы также переименованы. Если у вас есть миграции, которые переименовывают индексы, они больше не нужны.
В Rails 4+ rename_table будет barf, если имя нового индекса слишком велико, поэтому в этом случае ваш подход по-прежнему будет полезен. –
Хотя Rails 4+ автоматически переименовывает индексы, он получил ошибки и не смог переименовать. Итак, этот ответ полезен. – Sithu
Также в Rails 4+ вы можете использовать 'rename_index: table_name," oldname "," newname "' в методе 'change'. Если вы получите эту ошибку, «Имя индекса [...] в таблице« fertilisation_planning_plot_details »слишком длинное, ограничение - 63 символа» сначала переименуйте индекс вручную в нечто короткое. – amoebe