2010-11-20 87 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