Можно ли переименовать индекс с помощью миграции рельсов? Я знаю, что существует преобразование rename_column, но кажется, что rename_index не существует. Нужно ли вместо этого использовать remove_index и add_index? Ответ 1 Вы также можете выполнить произвольный SQL в своих миграциях. У нас есть вспомогательные методы, которые добавляют внешние ключи к нашим таблицам: def add_foreign_key(from_table, from_column, to_table) constraint_name = "fk_#{from_table}_#{from_column}" execute %{alter table #{from_table} add constraint #{constraint_name} foreign key (#{from_column}) references #{to_table}(id) } end Вы можете использовать любой SQL, поддерживаемый вашей базой данных. Ответ 2 rename_index должны быть указаны строки, а не символы. rename_index :table_name, 'old_name', 'new_name' Я немного почесал голову, пытаясь переименовать таблицу и индексировать ее. Rails 3.2.3 и MySQL. Ответ 3 Rails 3 предоставляет ярлык для переименования индекса: rename_index :table_name, :old_name, :new_name http://guides.rubyonrails.org/migrations.html Кстати, это не делает больше, чем удаление старого и добавление нового: http://apidock.com/rails/v2.3.8/ActiveRecord/ConnectionAdapters/SchemaStatements/rename_index Ответ 4 Как и Rails 5 (EDIT: также в Rails 4), переименование столбца также автоматически переименует индекс. Ответ 5 В соответствии с API использование remove_index и add_index - единственный способ добиться этого.
Ответ 1 Вы также можете выполнить произвольный SQL в своих миграциях. У нас есть вспомогательные методы, которые добавляют внешние ключи к нашим таблицам: def add_foreign_key(from_table, from_column, to_table) constraint_name = "fk_#{from_table}_#{from_column}" execute %{alter table #{from_table} add constraint #{constraint_name} foreign key (#{from_column}) references #{to_table}(id) } end Вы можете использовать любой SQL, поддерживаемый вашей базой данных.
Ответ 2 rename_index должны быть указаны строки, а не символы. rename_index :table_name, 'old_name', 'new_name' Я немного почесал голову, пытаясь переименовать таблицу и индексировать ее. Rails 3.2.3 и MySQL.
Ответ 3 Rails 3 предоставляет ярлык для переименования индекса: rename_index :table_name, :old_name, :new_name http://guides.rubyonrails.org/migrations.html Кстати, это не делает больше, чем удаление старого и добавление нового: http://apidock.com/rails/v2.3.8/ActiveRecord/ConnectionAdapters/SchemaStatements/rename_index
Ответ 4 Как и Rails 5 (EDIT: также в Rails 4), переименование столбца также автоматически переименует индекс.
Ответ 5 В соответствии с API использование remove_index и add_index - единственный способ добиться этого.