Ruby on rails ActiveRecord将Rails 6、float或bigint列类型视为整数

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

我需要在表的postgres列上接受非常大的整数值
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,很抱歉误读了