2016-06-01 17 views
0

ich eine Migration haben, die eine benannte Integritätserstellen Einschränkungen in Schienen Migrationen

execute(%Q{ 
    ALTER TABLE dreamflore_clients 
    ADD CONSTRAINT unique_clients UNIQUE(client, no_adresse); 
}) 

Aber in schema.rb schaffen, Schienen, diesen Teil in einen Index drehen

add_index "dreamflore_clients", ["client", "no_adresse"], name: "unique_clients", unique: true, using: :btree 

Das Problem ist, wir verwenden Apartment und neu erstellte Mandanten haben einen Index anstelle der Einschränkung und wir verwenden die PostgreSQL-Funktion ON CONFLICT ON CONSTRAINT

Für n Die Lösung besteht darin, einige Migrationen rückgängig zu machen und erneut zu migrieren, aber das ist ein wirklich schmutziger Hack.

Wie man Schienen stoppt, die diesen Index verursachen?

Antwort

1

Haben Sie versucht, structure.sql anstelle von schema.rb zu verwenden, indem Sie rake db:structure:dump ausführen?

schema.rb hat einige Einschränkungen in Bezug auf die Syntax und den Wechsel zu structure.sql sollte dieses Problem lösen.

Sie können den Wechsel zu structure.sql permanent vornehmen, indem Sie environment.rb config.active_record.schema_format = :sql hinzufügen.

Verwandte Themen