Подтвердить что ты не робот

Как добавить ограничение `unique` к уже существующему индексу путем миграции

Как я могу добавить ограничение unique: true к уже существующему индексу в базе данных Rails?

Я попытался выполнить миграцию

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

но миграция завершается с ошибкой, подобной этой.

Название индекса 'index_editabilities_on_user_id_and_list_id' на столе "редактируемые возможности" уже существуют

Я использую rails4 и postgresql.

4b9b3361

Ответ 1

Удалите старый индекс и добавьте его снова с новым ограничением:

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

Ответ 2

Более быстрый способ с использованием add_index_options:

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