PostgreSQL neví, jak automaticky převést sloupec varchar do pole varchar . Neví, co byste mohli zamýšlet, protože nemá žádný způsob, jak zjistit, v jakém formátu si myslíte, že jsou aktuální hodnoty.
Takže to musíte říct; to je to, co USING doložka je pro.
Zdá se, že ActiveRecord explicitně nepodporuje USING klauzule (není překvapivé, protože sotva podporuje i ty nejzákladnější databázové funkce). Pro migraci však můžete zadat svůj vlastní text SQL.
Za předpokladu, že vaše řetězce jsou odděleny čárkami a samy o sobě čárky nemusí obsahovat, například:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Sám Rails nepoužívám a netestoval jsem to, ale je to v souladu se syntaxí použitou v příkladech jinde.)