2012-01-03 9 views
6

は、私は、次の移行を使用して、私のベースでdecimal列を移行:精度とスケールでDecimalを使用するには?レール3.0.3を使用して

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

移行がOK動作しますが、それが唯一の4.65

を保存する場所を、私はまだ4.64564のような値を格納することができます

それに加えて、作成したマイグレーションファイルを除いて、schema.rbにはスケール/精度に関する情報は含まれていません。

なぜレールは精度/スケールマイグレーションを無視して無視しますか?

答えて

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 
で試してみてください
関連する問題