rename_column
変換があることは知っていますが、rename_index
が存在しないようです。
代わりにremove_index
とadd_index
を使用する必要がありますか?
移行で任意の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を使用できます。
rename_index
には、記号ではなく文字列を指定する必要があります。
rename_index :table_name, 'old_name', 'new_name'
テーブルとそのインデックスの名前を変更しようとしたときに、しばらく頭を悩ませていました。 Rails 3.2.3およびMySQL。
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
Rails 5(EDIT:Rails 4)でも)の時点で、列の名前を変更すると、インデックスの名前も自動的に変更されます。
[〜#〜] api [〜#〜] によると、これを実現する唯一の方法はremove_index
とadd_index
を使用することです。