2010-11-20 89 views
4

我已經設置:precision => 8,:scale => 2的小數點位移,但是當我輸入1923.423453時它仍然是1923.4。它應該是1923.42 ...對不對?RAILS精度和十進制小數點不起作用

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

是如何在你的數據庫中定義此列?它是否符合遷移中的設置? – Ariejan 2010-11-20 15:27:24

+0

yap,遷移與控制檯相同 – wizztjh 2010-11-20 16:19:08

+0

我只是再次檢查並與我自己的一些遷移進行比較,並且您的代碼看起來很好。不知道爲什麼它不工作。如果你調用object.value.to_f會發生什麼,它真的四捨五入到一個小數?你是否通過mysql命令行或HeidiSQL或其他方法檢查了數據庫中的值是什麼? – 2010-11-20 18:50:04

回答

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

所以我需要做它升級我的rails sqlite適配器? – wizztjh 2010-12-02 06:31:45

+0

我自己並沒有嘗試過這個補丁,但是看着目標將被包含在3.0.4里程碑中的更改,您必須更新sqlite_adapter.rb文件,詳細信息請參見此要點(它是補丁的內容上面的燈塔票):https://gist.github.com/724939 – clemensp 2010-12-02 07:38:19

+0

葉普,它已被合併到掌握瓦特/此PR: https://github.com/rails/rails/pull/3400 幷包括在版本3.2.0以後的Rails中 – 2012-11-13 07:58:33