PostgreSQL não sabe como converter automaticamente uma coluna de
varchar
em uma matriz de varchar
. Ele não sabe o que você pode pretender, porque não tem como saber em que formato você acha que os valores atuais estão. Então você precisa dizer isso; é isso que o
USING
cláusula é para. ActiveRecord não parece suportar explicitamente o
USING
cláusula (não é surpreendente, pois mal suporta até mesmo os recursos mais básicos de banco de dados). No entanto, você pode especificar seu próprio texto SQL para a migração. Assumindo que suas strings são separadas por vírgulas e podem não conter vírgulas, por exemplo:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Eu mesmo não uso Rails e não testei isso, mas é consistente com a sintaxe usada em exemplos em outros lugares).