Ruby on rails ActiveRecord将Rails 6、float或bigint列类型视为整数
我需要在表的postgres列上接受非常大的整数值Ruby on rails ActiveRecord将Rails 6、float或bigint列类型视为整数,ruby-on-rails,Ruby On Rails,我需要在表的postgres列上接受非常大的整数值pre\u transaction。列名为give_amount 我尝试使用以下命令将列类型更改为bigint: change\u列:预交易,:给予金额,:bigint 但是,即使重新启动控制台,在尝试保存记录时仍会出现以下错误: ActiveModel::RangeError (1000000000000000000000 is out of range for ActiveModel::Type::Integer with limit 8 b
pre\u transaction
。列名为give_amount
我尝试使用以下命令将列类型更改为bigint
:
change\u列:预交易,:给予金额,:bigint
但是,即使重新启动控制台,在尝试保存记录时仍会出现以下错误:
ActiveModel::RangeError (1000000000000000000000 is out of range for ActiveModel::Type::Integer with limit 8 bytes)
我还意识到,如果在rails控制台中运行PreTransaction
,bigint列将显示为integer
列(对于在模式中声明为bigint但在rails c中显示为integer的外键也是一样),这很奇怪
这就是为什么我随后将列类型更改为float
。现在,当我在rails控制台中运行PreTransaction
时,我确实看到该列的类型为float
,但现在当我尝试保存它保存的记录时,却将其舍入到1.0
那么,如何在数据库中存储非常大的整数呢?使用
:decimal
类型,而不是:bigint
。它避免了浮点舍入的不一致性,并允许使用大的数字。您使用什么数据库?正如我上面所说的Postgresql,很抱歉误读了