2012-10-29 26 views
19

我想從我的數據庫中的十進制(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 

這裏的背景:"PG::Error - numeric field overflow" on Heroku

+0

本質,尋找rails-遷移方式寫'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

在你遷移文件更改領域:整數 和運行 運行耙分貝:遷移

+1

您需要一個新的遷移文件。使用相同的遷移文件將不起作用。 – NRR

相關問題