2014-11-30 12 views
10

Tôi đang cố gắng thêm cột mới, 'vĩ độ', vào bảng Postgres hiện có, sau cột 'vị trí'.PostgreSQL: add_column "after" tùy chọn sử dụng trong Rails di chuyển

Sử dụng cú pháp này đặt các cột trong địa điểm chính xác:

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

Và sử dụng cú pháp này đảm bảo rằng lĩnh vực này là đúng kiểu dữ liệu

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

Nhưng khi tôi cố gắng và kết hợp hai :

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

Tôi nhận được "ArgumentError: sai số đối số (5 cho 3..4)"

"Không phải lo lắng", tôi nghĩ, "Tôi sẽ chỉ kết hợp các đối số!":

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

Nhưng sau đó các cột xuất hiện ở cuối bảng xếp hạng. Tôi đang làm gì sai?

Cảm ơn :)

+1

[Thứ tự của các cột hoàn toàn không có liên quan trong cơ sở dữ liệu quan hệ] (http://stackoverflow.com/questions/1243547/how-to-add-a-new-column-in-a-table -after-the-2-or-3rd-column-in-the-table-usin) – dax

+1

Vâng, tôi biết điều đó, nhưng tôi giống như giữ những thứ liên quan với nhau chỉ từ một quan điểm lành mạnh ... –

+0

trong phương thức 'add_column' không có tùy chọn như vậy': after =>: existing_column'. các tùy chọn được phép bạn có thể tìm thấy trong [tài liệu cho phương pháp này] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column#637-Options) –

Trả lời

18

Định nghĩa cuối cùng của bạn là chính xác. Nhưng vấn đề ở đây không phải với Rails, nhưng với PostgreSQL, không cho phép thêm một cột ở vị trí cụ thể. Đọc thêm: How can I specify the position for a new column in PostgreSQL?

+0

Ah, ngớ ngẩn tôi, tôi đã không thử nghiệm: sau khi lựa chọn kể từ khi chuyển từ MYSQL sang Postgres. Tốt bắt, cảm ơn :) –

Các vấn đề liên quan