PostgreSQL doesn't know how to automatically convert a column of varchar
into an array of varchar
. It doesn't know what you might intend, because it has no way to know what format you think the current values are in.
So you need to tell it; that's what the USING
clause is for.
ActiveRecord doesn't seem to explicitly support the USING
clause (not surprising, as it barely supports even the most basic database features). You can specify your own SQL text for the migration, though.
Assuming your strings are comma separated and may not themselves contain commas, for example:
def change
change_column :table, :dummy_column, "varchar[] USING (string_to_array(dummy_column, ','))"
end
(I don't use Rails myself and haven't tested this, but it's consistent with the syntax used in examples elsewhere).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…