ruby on rails - rails - PG:: StringDataRightTruncation:エラー:PostgreSQLの文字列(255)制限| ヘロク



heroku rails template (2)

私はListings controllerを持っており、ユーザーは説明を追加できます。 説明が長くなければならない場合、私はHerokuでこのエラーを受け取ります。

ActiveRecord::StatementInvalid (PG::StringDataRightTruncation: ERROR:  
value too long for type character varying(255)

これをどうすれば解決できますか?

編集

私はテーブル・ストリング(制限があります)を変更しなければならないことを知りました(ジョンもそれを言っていました):無制限のテキスト。 しかし、移行時にテーブルを変更するだけでは機能していないようです。

私の編集リストマイグレーション

class CreateListings < ActiveRecord::Migration
def change
create_table :listings do |t|
  t.string :title
  t.text :description, :limit => nil

  t.timestamps
end
end
end

しかし、私はまだHerokuの問題を抱えています - >

    2013-07-29T09:39:05.069692+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::StringDataRightTruncation: ERROR:  value too long for type character v rying(255)
2013-07-29T09:39:05.069870+00:00 app[web.1]:
2013-07-29T09:39:05.069692+00:00 app[web.1]: : INSERT INTO "listings" ("created_at", "description", "image_content_type", "image_file_name", "image_fil _size", "image_updated_at", "price", "title", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id"):
2013-07-29T09:39:05.069870+00:00 app[web.1]:   app/controllers/listings_controller.rb:35:in `block in create'
2013-07-29T09:39:05.069870+00:00 app[web.1]:   app/controllers/listings_controller.rb:34:in `create'
2013-07-29T09:39:05.069870+00:00 app[web.1]:
2013-07-29T09:39:05.069860+00:00 heroku[router]: at=info method=POST path=/listings host=vaultx.herokuapp.com fwd="178.59.173.169" dyno=web.1 connect=3 s service=1882ms status=500 bytes=1266

Answer #1

以前の移行は編集しないでください。 原則として決してしないでください。 代わりに、新しい移行を作成して変更を行います(必要に応じてロールバックできます)。

まず、移行を生成します。

rails g migration change_datatype_on_TABLE_from_string_to_text

次に、生成されたファイルを編集して、必要に応じてテーブル名とカラム名を変更します。

class ChangeDatatypeOnTableFromStringToText < ActiveRecord::Migration
  def up
    change_column :table_name, :column_name, :text, :limit => nil
  end

  def down
    change_column :table_name, :column_name, :string
  end
end

今すぐ移行を実行します。

bundle exec rake db:migrate

それはそれを行う必要があります。 (変更メソッドを使用するのは可逆的な移行でのみ機能するため、データ型の変更をロールバックするとActiveRecord :: IrreversibleMigration例外がスローされるため、changeメソッドを使用する代わりに、個別にupメソッドとdownメソッドを定義しました。


Answer #2

列をa:string型ではなくa:string型として指定すると、この問題が解決されるようです。





ruby-on-rails-4