0

私が抱えている問題は、移行を実行すると更新がデータベースに適用されますが、レールは同じことをしません。

もっと正確に言うと。番地付きの住所モデルがあります。最近、番地には (35B) のような文字を含めることができるはずだと言われました。したがって、整数列を文字列の列に変換したいと思います。これは私のデータでは問題ありません、赤。整数のみ。

適用した移行は期待どおりに機能します。postgres データベースの列の型を変更し、データの内容を保持します。私はこの移行を使用していました。

class ConvertIntToStringOnNumber < ActiveRecord::Migration
  def change
    change_table :addresses do |t|
      t.change :number, :string
    end
  end
end

この schema.rb での移行結果

create_table "addresses", :force => true do |t|
  t.string   "street"
  t.string   "number"
  t.integer  "zip"
  t.string   "floor"
  t.datetime "created_at", :null => false
  t.datetime "updated_at", :null => false
end

私のherokuサーバーで移行を実行した後、フォームのデータを使用してデータベースにクエリを実行できません。これは以前は問題ありませんでした。Rails は整数を検索しようとしていますが、データベースには文字列が含まれています。

schema.rb が別のことを言っているにもかかわらず、Rails はこのクエリを実行しようとしています。ここでパーティーは終了です。

SELECT  "addresses".* FROM "addresses"  WHERE "addresses"."street" = 'xxxx' AND "addresses"."number" = 63 AND "addresses"."floor" = '' AND "addresses"."zip" = 9000 LIMIT 1):

私は forigen キーに関する多くの問題を見てきましたが、これはそれらの問題の 1 つではありません。

4

1 に答える 1

1

移行の実行後にアプリケーションを再起動しましたか?

ActiveRecord は、テーブルがインスタンス化されるときに、テーブルに関する情報を各クラスにロードします。詳細については、 #columnsを参照してください。Heroku はアプリを本番モードで実行するため、リクエストごとにクラスが自動的にリロードされることはありません。

heroku restartアプリケーションで実行してみてください。Rails が変更を取得するはずです。

于 2013-02-11T05:02:48.017 に答える