PostgreSQL không biết cách tự động chuyển đổi một cột của varchar
vào một mảng varchar
. Nó không biết bạn có thể dự định gì, vì nó không có cách nào để biết bạn nghĩ các giá trị hiện tại đang ở định dạng nào.
Vì vậy, bạn cần phải nói với nó; đó là những gì USING
mệnh đề dành cho.
ActiveRecord dường như không hỗ trợ rõ ràng USING
(không có gì đáng ngạc nhiên, vì nó hầu như không hỗ trợ ngay cả những tính năng cơ sở dữ liệu cơ bản nhất). Tuy nhiên, bạn có thể chỉ định văn bản SQL của riêng mình để di chuyển.
Giả sử các chuỗi của bạn được phân tách bằng dấu phẩy và bản thân có thể không chứa dấu phẩy, ví dụ:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Bản thân tôi không sử dụng Rails và chưa thử nghiệm điều này, nhưng nó phù hợp với cú pháp được sử dụng trong các ví dụ ở nơi khác).