PostgreSQL не знае как автоматично да преобразува колона от varchar
в масив от varchar
. Той не знае какво може да възнамерявате, защото няма начин да разбере в какъв формат смятате, че са текущите стойности.
Така че трябва да го кажете; това е, което USING
клаузата е за.
Изглежда ActiveRecord не поддържа изрично USING
клауза (не е изненадващо, тъй като почти не поддържа дори най-основните функции на базата данни). Можете обаче да посочите свой собствен SQL текст за миграцията.
Ако приемем, че вашите низове са разделени със запетая и може да не съдържат запетаи, например:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Аз самият не използвам Rails и не съм тествал това, но е в съответствие със синтаксиса, използван в примери другаде).