PostgreSQL no sabe cómo convertir automáticamente una columna de varchar
en una matriz de varchar
. No sabe cuál es su intención, porque no tiene forma de saber en qué formato cree que están los valores actuales.
Así que necesitas contarlo; eso es lo que USING
la cláusula es para.
ActiveRecord no parece admitir explícitamente USING
cláusula (no es sorprendente, ya que apenas admite incluso las características más básicas de la base de datos). Sin embargo, puede especificar su propio texto SQL para la migración.
Asumiendo que sus cadenas están separadas por comas y pueden no contener comas, por ejemplo:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Yo mismo no uso Rails y no lo he probado, pero es consistente con la sintaxis utilizada en ejemplos en otros lugares).