2014-11-30 4 views
10

Ich versuche, eine neue Spalte, 'Breite', zu einer vorhandenen Postgres-Tabelle, nach der Spalte 'Standort' hinzuzufügen.PostgreSQL: add_column "nach" Option Verwendung in Rails-Migration

mit dieser Syntax stellt die Spalte an der richtigen Stelle:

add_column :table, :column, :decimal, :after => :existing_column 

Und diese Syntax gewährleistet mit, dass das Feld der Typ korrekte Daten

add_column :table, :column, :decimal, {:precision => 10, :scale => 6} 

Aber wenn ich versuche, und verbinden die beiden :

add_column :table, :column, :decimal, {:precision => 10, :scale => 6}, :after => :existing_column 

ich "Argument: falsche Anzahl von Argumenten (5 für 3..4)"

„Sorge nicht zu“, dachte ich: „Ich werde nur die arguements kombinieren!“:

add_column :table, :column, :decimal, {:precision => 10, :scale => 6, :after => :existing_column} 

Aber dann erscheinen die Spalten am Ende der Tabelle. Was mache ich falsch?

Danke :)

+1

[Die Reihenfolge der Spalten ist in relationalen Datenbanken völlig irrelevant] (http://stackoverflow.com/questions/1243547/how-to-add-a-new-column-in-a-table (nach der 2. oder 3. Spalte-im-Tisch-Usin) – dax

+1

Ja, ich bin mir dessen bewusst, aber ich mag es, verwandte Dinge nur vom Standpunkt der Gesundheit aus zusammenzuhalten ... –

+0

in 'add_column' Methode keine solche Option': after =>: existing_column'. zulässige Optionen finden Sie in [Dokumentation für diese Methode] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column#637-Options) –

Antwort

18

Ihre letzte Definition ist korrekt. Aber das Problem hier ist nicht mit Rails, aber mit PostgreSQL, das nicht erlaubt, eine Spalte an einer bestimmten Position hinzuzufügen. Mehr erfahren: How can I specify the position for a new column in PostgreSQL?

+0

Ah, du Dummkopf, ich habe die Option nachher nicht getestet, seit ich von MYSQL zu Postgres gewechselt bin. Guter Fang, danke :) –

Verwandte Themen