2015-11-03 1 views
13

Я создал таблицу, используя следующую миграцию:Как удалить уникальное ограничение из столбца базы данных в 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?

+0

Вы должны удалить 'index'. – Pavan

ответ

25

Вы должны удалить индекс с:

remove_index :profile_pictures, :picture_id 

добавить добавить его снова:

add_index :profile_pictures, :picture_id 

ActiveRecord::Migration

6

add_index: profile_pictures,: picture_id, уникальный: истинный

Таким образом обновить индекс:

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

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