2010-11-20 14 views
4

私はマイグレーションの10進数で:precision => 8、scale => 2と設定しましたが、1923.423453を入力するとまだ1923.4です。 1923.42 ...そうでしょうか?RAILS 10進数の精度と位取りが正しくありません

t.decimal :value , :precision => 8, :scale => 2 , :default => 0 
+0

この列は、データベースに定義されている方法は?移行の設定と一致していますか? – Ariejan

+0

yap、マイグレーションはコンソールと同じ – wizztjh

+0

私は自分のマイグレーションのいくつかを二重チェックして比較したところ、コードは正常に見えます。なぜそれが動作していないのか分かりません。 object.value.to_fを呼び出すとどうなりますか?実際には小数点以下を切り捨てますか? mysqlのコマンドラインやHeidiSQLなどを使って、データベースの値が何であるかを確認しましたか? –

答えて

2

明らかに、すべてのsqliteオプションは移行時に削除されます。

は、ここでは、この問題を解決するためのマイルストーン3.0.4をターゲット灯台チケットです: https://rails.lighthouseapp.com/projects/8994/tickets/2872-patch-sqlite3-adapter-drops-decimal-columns-precision-scale-when-migration-tries-to-alter-them

+0

のラウンドメソッドがありますので、私はそれを私のレールsqliteアダプタをアップグレードする必要がありますか? – wizztjh

+0

私は自分自身でパッチを試してみませんでしたが、3.0.4マイルストーンに含めることを目標とした変更を見て、この要点に詳述されているsqlite_adapter.rbファイルを更新する必要がありました(パッチの内容は上の灯台チケット):https://gist.github.com/724939 – clemensp

+0

Yepp、それはこのw /このマスターと併合されました。PR: https://github.com/rails/rails/pull/3400 バージョン3.2.0以降のRailsで –

関連する問題