2014-11-30 13 views
10

Próbuję dodać nową kolumnę "szerokość geograficzna" do istniejącej tabeli Postgres, po kolumnie "location".PostgreSQL: add_column "after" użycie opcji w migracji Railsów

Używając tej składni stawia kolumnę w odpowiednim miejscu:

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

i za pomocą tej składni zapewnia, że ​​pole jest prawidłowy typ danych

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

Ale gdy próbuję i połączyć dwa :

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

Otrzymuję "ArgumentError: niepoprawna liczba argumentów (5 dla 3..4)"

„Nie martw się”, pomyślałem, „Ja po prostu połączyć arguements!”:

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

Ale wtedy kolumny pojawiają się na końcu tabeli. Co ja robię źle?

Dzięki :)

+1

[Kolejność kolumn jest całkowicie nieistotna w relacyjnych bazach danych] (http://stackoverflow.com/questions/1243547/how-to-add-a-new-column-inable-- table - po drugiej-trzeciej-trzeciej-kolumny-w-stole) – dax

+1

Tak, jestem tego świadomy, ale lubię utrzymywać podobne rzeczy razem z czysto psychicznego punktu widzenia ... –

+0

w metodzie 'add_column' nie ma takiej opcji': after =>: existing_column'. dozwolone opcje, które można znaleźć w [dokumentacji tej metody] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column#637-Options) –

Odpowiedz

18

Twoja ostatnia definicja jest poprawna. Ale problem tutaj nie dotyczy Rails, ale PostgreSQL, który nie pozwala na dodanie kolumny w określonej pozycji. Przeczytaj więcej: How can I specify the position for a new column in PostgreSQL?

+0

Ah, głuptasie, nie testowałem opcji: after, ponieważ przechodzę z MYSQL do PostgreSQL. Dobry połów, dzięki :) –

Powiązane problemy