unique: true
という制約をRailsデータベースの既存のインデックスに追加するにはどうしたらいいですか?マイグレーションによって既存のインデックスに `unique`制約を追加する方法
私は
def change
add_index :editabilities, [:user_id, :list_id], unique: true
end
で移行しようとしましたが、移行は、このようなエラーで失敗します。
Index name 'index_editabilities_on_user_id_and_list_id' on table 'editabilities' already exists
私はrails4とpostgresqlを使用しています。
私はschema.rb 'ために2つの移行でこれをしなければなりませんでした'を更新する。 – trliner
'schema.rb'はRails 4.2.0でうまく更新されました。現在解決されている可能性のあるバグでしょうか?あるいは、それはデータベースに依存しているかもしれません。私はPostgresを使用しています。 – GMA
インデックスを削除できないような外部キー制約がある場合、これは機能しません。その場合は、 外部キーを削除してからインデックスを削除し、再度新しいインデックスを追加することができます。あなたはに依存している場合、真 エンド '' ' : ' ''ルビー ... remove_foreign_key:editabilities、列は::editabilities、:: ADD_INDEXをUSER_ID:editabilities、:user_idは、ユニークな REMOVE_INDEXをUSER_IDプロダクション・データベースでは、最初に別の名前で新しい変更済み索引を追加して、2つの索引を持たせることができます。その後、古い索引を削除してから、新しい索引の名前を変更することができます。 – Robert