PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Rails Migration changeant la colonne pour utiliser les tableaux Postgres

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).