PostgreSQL nie wie, jak automatycznie przekonwertować kolumnę varchar
do tablicy varchar
. Nie wie, co zamierzasz, ponieważ nie ma możliwości sprawdzenia, w jakim formacie Twoim zdaniem są obecne wartości.
Więc musisz to powiedzieć; to właśnie USING
klauzula dotyczy.
ActiveRecord nie wydaje się jawnie obsługiwać USING
klauzula (nic dziwnego, ponieważ ledwo obsługuje nawet najbardziej podstawowe funkcje bazy danych). Możesz jednak określić własny tekst SQL do migracji.
Zakładając, że ciągi są oddzielone przecinkami i same nie mogą zawierać przecinków, na przykład:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Sam nie używam Railsów i nie testowałem tego, ale jest to zgodne ze składnią używaną w przykładach gdzie indziej).