我的RoR目前正在为Bigdecimal记录提供一些问题。
我的代码是用以下内容更新某些属性:
BigDecimal.new((income*scale).to_s)
例如,我扫描了一个表单,其值为
11210000000.0
当我打印bigdecimal时,它看起来像:
#<BigDecimal:91e2284,'0.1121E11',18(27)>
当我查看mySQL数据库中的记录时,记录显示为
Income: 9999999999
所有收入低于100亿的记录都没有这个问题。
发生了什么事?
答案 0 :(得分:1)
我认为(因为我在文档中找不到它,但我知道Integer就是这种情况)BigDecimal在Ruby中没有MAX值。不幸的是,所有数据库系统都有这些限制,因此您可能希望将大数字存储为数据库中的字符串。
答案 1 :(得分:1)
在终端写道:
rails g migration change_income_format_in_my_table
然后将迁移文件设置为:
class ChangeIncomeFormatInMyTable < ActiveRecord::Migration
def up
change_table :forms do |t|
t.change :income, :decimal, :precision => 16, :scale => 2
end
end
def down
change_table :forms do |t|
t.change :income, :decimal
end
end
end
然后键入
rake db:migrate
感谢house9