37

データベースのdecimal(PostgreSQL NUMERIC)フィールドから精度とスケールの属性を削除しようとしていますか?

フィールド:

t.decimal  "revenue_per_transaction", :precision => 8, :scale => 2
t.decimal  "item_quantity",           :precision => 8, :scale => 2
t.decimal  "goal_conversion",         :precision => 8, :scale => 2
t.decimal  "goal_abandon",            :precision => 8, :scale => 2
t.decimal  "revenue",                 :precision => 8, :scale => 2

これらを無制限のスケールと精度に変更したり、スケールを増やしたりするには、移行に何を追加する必要がありますか?現在、スケール制限に達しており、次のようなエラーが発生しています。

ERROR:   numeric field overflow

コンテキストは次のとおりです:Herokuの「PG::Error-数値フィールドオーバーフロー」

4

2 に答える 2

79

フォーマット :

change_column(table_name, column_name, type, options): Changes the column to a different type using the same parameters as add_column.

最初にあなたのターミナルで:

rails g migration change_numeric_field_in_my_table

次に、移行ファイルで:

class ChangeNumbericFieldInMyTable < ActiveRecord::Migration
  def self.up
   change_column :my_table, :revenue_per_transaction, :decimal, :precision => give whatever, :scale => give whatever
  end
end

それから

run rake db:migrate

ソース:http ://api.rubyonrails.org/classes/ActiveRecord/Migration.html

于 2012-10-29T04:27:20.110 に答える