PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Coluna de mudança do Rails Migration para usar arrays Postgres


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