2012-01-03 38 views
6

使用Rails 3.0.3,我遷移在我的基地decimal列使用以下遷移:如何在精度和刻度上使用十進制?

change_table :products do |t| 
    t.change :price, :decimal, :precision => 10, :scale => 2 
    # other code 
end 

遷移工作正常,但我還是儲值像4.64564,它應該只存儲4.65

除此之外,除了我創建的遷移文件外,schema.rb不包含有關比例/精度的信息。

爲什麼rails會接受精度/範圍遷移來忽略它?

回答

1

我有同樣的問題,請看看那個lib目錄下: https://github.com/dmgr/dmg_decimal

有了它,你可以在這樣一個模型中使用它:

def price= val 
    self[:price] = Dmg::Decimal.real(val, scale: 2, precision: 10).to_d if val.present? 
end 
1

你應該

change_column :products, :price, :decimal, :precision => 10, :scale => 2 
嘗試