Daniel Daniel - 1 year ago 89
SQL Question

How can I remove a unique constraint from a database column in Rails?

I created a table using the following migration:

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

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

I tried to remove the constraint with the following:

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

I still get a unique constraint violation error if I try to use the same picture_id in more than one place. What is the proper way to remove the uniqueness constraint from picture_id?

Answer Source

You must remove your index with:

remove_index :profile_pictures, :picture_id

add add it again with:

add_index :profile_pictures, :picture_id