タイトルのまんまです
結構ハマったので備忘録もかねて書いておきます
例えば、既存のindexを更新する場合は、以下のように書けばうまく行くと思います
class AddIndexSample < ActiveRecord::Migration[5.2]
def change
remove_index :users, :type_id
add_index :users, :type_id, unique: true
end
end
これはすでにusers
テーブルのtype_id
というカラムに対して、indexが貼られていて、そのindexを更新するための方法です
ですが、foreign_keyが貼られている場合はindexを削除しようとするとエラーが出てしまいます
なのでforeign_keyを削除してからindexを削除して更新するとうまくいきます
class AddIndexSample < ActiveRecord::Migration[5.2]
def change
remove_foreign_key :users, :types # 第二引数はテーブル名
remove_index :users, :type_id
add_foreign_key :users, :types
add_index :users, :type_id, unique: true
end
end