PostgreSQL vet inte hur man automatiskt konverterar en kolumn med varchar
till en array av varchar
. Den vet inte vad du kan tänkas ha för avsikt, eftersom den inte har något sätt att veta vilket format du tror att de aktuella värdena är i.
Så du måste berätta det; det är vad USING
klausul är för.
ActiveRecord verkar inte explicit stödja USING
klausul (inte överraskande, eftersom den knappt stöder ens de mest grundläggande databasfunktionerna). Du kan dock ange din egen SQL-text för migreringen.
Förutsatt att dina strängar är kommaseparerade och kanske inte själva innehåller kommatecken, till exempel:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Jag använder inte Rails själv och har inte testat detta, men det överensstämmer med syntaxen som används i exempel på andra ställen).