web-dev-qa-db-fra.com

Comment ajouter une contrainte «unique» à un index déjà existant par migration

Comment puis-je ajouter unique: true contrainte à un index déjà existant dans la base de données Rails?

J'ai essayé de migrer par

  def change
    add_index :editabilities, [:user_id, :list_id], unique: true
  end

mais la migration échoue avec une erreur comme celle-ci.

Le nom d'index 'index_editabilities_on_user_id_and_list_id' sur la table 'editabilities' existe déjà

J'utilise Rails4 et postgresql.

51
ironsand

Supprimez l'ancien index et ajoutez-le à nouveau avec la nouvelle contrainte:

def change
  remove_index :editabilities, [:user_id, :list_id]
  add_index :editabilities, [:user_id, :list_id], unique: true
end
86
Baldrick