PostgreSQL ne sait pas convertir automatiquement une colonne de varchar
dans un tableau de varchar
. Il ne sait pas ce que vous pourriez avoir l'intention, car il n'a aucun moyen de savoir dans quel format vous pensez que les valeurs actuelles sont.
Donc, vous devez le dire; c'est ce que le USING
la clause est pour.
ActiveRecord ne semble pas supporter explicitement le USING
clause (ce qui n'est pas surprenant, car elle prend à peine en charge les fonctionnalités de base de données les plus élémentaires). Vous pouvez cependant spécifier votre propre texte SQL pour la migration.
En supposant que vos chaînes soient séparées par des virgules et qu'elles ne contiennent pas elles-mêmes de virgules, par exemple :
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Je n'utilise pas Rails moi-même et je n'ai pas testé cela, mais c'est cohérent avec la syntaxe utilisée dans les exemples ailleurs).