Rails Migrations: próbowano zmienić typ kolumny z string na integer

Stworzyłem tabelę w mojej aplikacji szynowej z poleceniem generowania migracji szyn. Oto plik migracji:

<code>class CreateListings < ActiveRecord::Migration
  def change
    create_table :listings do |t|
      t.string :name
      t.string :telephone
      t.string :latitude
      t.string :longitude

      t.timestamps
    end
  end
end
</code>

Potem chciałem zapisać szerokość i długość geograficzną jako liczby całkowite, więc próbowałem uruchomić:

<code>rails generate migration changeColumnType
</code>

a zawartość tego pliku to:

<code>class ChangeColumnType < ActiveRecord::Migration
  def up
    #change latitude columntype from string to integertype
    change_column :listings, :latitude, :integer
    change_column :listings, :longitude, :integer
    #change longitude columntype from string to integer type
  end

  def down  
  end
end
</code>

Spodziewałem się zmiany typu kolumny, ale prowizja została przerwana i pojawił się następujący komunikat o błędzie. Zastanawiałem się, dlaczego to nie nastąpiło? Używam postgresql w mojej aplikacji.

<code>rake db:migrate
==  ChangeColumnType: migrating ===============================================
-- change_column(:listings, :latitude, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  column "latitude" cannot be cast to type integer
: ALTER TABLE "listings" ALTER COLUMN "latitude" TYPE integer

Tasks: TOP => db:migrate
(See full trace by running task with --trace)
</code>

UWAGA: Tabela nie ma danych. Dzięki

questionAnswers(6)

yourAnswerToTheQuestion