Как удалить уникальное ограничение из столбца базы данных в Rails?

Я создал таблицу, используя следующую миграцию:

class CreateProfilePictures < ActiveRecord::Migration
  def change
    create_table :profile_pictures do |t|
      t.integer :user_id, null: false
      t.integer :picture_id, null: false
      t.timestamps null: false
    end

    add_index :profile_pictures, :user_id, unique: true
    add_index :profile_pictures, :picture_id, unique: true
  end
end

Я попытался удалить ограничение следующим образом:

class FixProfilePic < ActiveRecord::Migration
  def change
    change_column :profile_pictures, :picture_id, :integer, unique: false
  end
end

Я по-прежнему получаю уникальную ошибку нарушения ограничений, если я пытаюсь использовать один и тот же файл picture_id в нескольких местах. Каков правильный способ устранения ограничения уникальности от picture_id?

Ответы

Ответ 1

Вы должны удалить свой индекс с помощью:

remove_index :profile_pictures, :picture_id

и добавьте его снова с помощью:

add_index :profile_pictures, :picture_id

ActiveRecord :: Migration

Ответ 2

add_index: profile_pictures,: picture_id, unique: true

Поэтому обновите свой индекс до:

  remove_index :profile_pictures, :picture_id
  add_index :profile_pictures, :picture_id

Я предполагаю, что это все.