2012-10-29 5 views
19

私のデータベースの10進(PostgreSQL NUMERIC)フィールドから精度と位取りの属性を削除しようとしていますか?10進数で精度と位取りを削除/変更するためのレール移動を作成するにはどうすればよいですか?

フィールド:

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 

をここでコンテキストです:"PG::Error - numeric field overflow" on Heroku

+0

を移行'ALTER TABLE ... ALTER COLUMN ... TYPE NUMERIC'を書くマイグレーション方法。 –

+0

答えを受け入れるか、なぜ受け入れられなかったのかコメントを追加しますか? – seokhoonlee

答えて

46

フォーマット:あなたの端末ではまず

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

+1

ところで答えを受け入れることを忘れないでください:) –

+1

除去精度はどうですか? – Hamdan

+0

@ Hamdanデータベースに応じて異なる精度/スケールをデフォルト値に設定する必要があります。http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column – eirikir

0

マイグレーションファイルにするためにあなたのフィールドを変更:整数 と 実行すくいデシベルを実行します。rails-を探して、基本的に

+1

新しい移行ファイルが必要です。同じ移行ファイルを使用することはできません。 – NRR

関連する問題