Cito o manual sobre
ALTER TABLE
:
Uma cláusula USING deve ser fornecida se não houver uma atribuição implícita ou de atribuição do tipo antigo para o novo.
O que você precisa é:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
Ou mais curto e mais rápido (para tabelas grandes) em um comando:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Isso funciona com ou sem dados desde que todas as entradas sejam conversíveis para
integer
.Se você definiu um
DEFAULT
para a coluna, talvez seja necessário descartar e recriá-la para o novo tipo. Aqui está o artigo do blog sobre como fazer isso com o ActiveRecord.
Ou vá com o conselho de @mu no comentário. Ele conhece seu Ruby. Eu só sou bom com o PostgreSQL aqui.