PostgreSQL kann eine Spalte von varchar
nicht automatisch konvertieren in ein Array von varchar
. Es weiß nicht, was Sie vielleicht beabsichtigen, weil es nicht wissen kann, in welchem Format die aktuellen Werte Ihrer Meinung nach vorliegen.
Sie müssen es also sagen; dafür steht USING
Klausel ist für.
ActiveRecord scheint USING
nicht explizit zu unterstützen -Klausel (nicht überraschend, da sie selbst die grundlegendsten Datenbankfunktionen kaum unterstützt). Sie können jedoch Ihren eigenen SQL-Text für die Migration angeben.
Angenommen, Ihre Zeichenfolgen sind durch Kommas getrennt und dürfen selbst keine Kommas enthalten, zum Beispiel:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(Ich benutze Rails selbst nicht und habe es nicht getestet, aber es stimmt mit der Syntax überein, die in anderen Beispielen verwendet wird).