PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Rails Migration cambia colonna per utilizzare gli array Postgres

PostgreSQL non sa come convertire automaticamente una colonna di varchar in un array di varchar . Non sa cosa potresti volere, perché non ha modo di sapere in quale formato pensi che siano i valori correnti.

Quindi devi dirlo; questo è ciò che il USING la clausola è per.

ActiveRecord non sembra supportare esplicitamente USING clausola (non sorprendente, in quanto supporta a malapena anche le funzionalità di database più basilari). Tuttavia, puoi specificare il tuo testo SQL per la migrazione.

Supponendo che le tue stringhe siano separate da virgole e potrebbero non contenere virgole, ad esempio:

def change
  change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end

(Non uso Rails da solo e non l'ho testato, ma è coerente con la sintassi usata negli esempi altrove).