2015-11-03 3 views
13

Ich habe eine Tabelle, die die folgende Migration mit:Wie kann ich eine eindeutige Integritätsbedingung aus einer Datenbankspalte in Rails entfernen?

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 

Ich habe versucht, die Einschränkung mit dem folgenden zu entfernen:

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

Ich bekomme immer noch eine eindeutige Einschränkung Verletzung Fehler, wenn ich versuche, das gleiche zu verwenden picture_id an mehr als einem Ort. Was ist der richtige Weg, um die Eindeutigkeitseinschränkung von Bild_ID zu entfernen?

+0

Sie müssen die 'index' entfernen. – Pavan

Antwort

6

add_index: profile_pictures,: picture_id, einzigartig: true

So Aktualisierung des Indexes an:

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

ich dies zu raten ist es.

remove_index :profile_pictures, :picture_id 

add es wieder mit: