ActiveModel::Type::Integer 的最大数量

Fel*_*ger 5 byte numbers ruby-on-rails activemodel ruby-on-rails-5

我试图将数字存储3980040429为对象的 ID,但出现以下错误:

\n\n
ActiveModel::RangeError (3980040429 is out of range for ActiveModel::Type::Integer with limit 4 bytes)\n
Run Code Online (Sandbox Code Playgroud)\n\n

4个字节不等于吗4 294 967 296

\n\n
4 bytes \xc3\x97 8 bits = 32 bits \n2\xc2\xb3\xc2\xb2 = 4 294 967 296\n
Run Code Online (Sandbox Code Playgroud)\n\n

因为我显然错了 - 我可以为 ID 保存的最大整数是多少?

\n\n

我使用的是 Rails 5.2 和 Postgres 9.6。

\n

Pur*_*ket 4

它是一个带符号的 4 字节整数。

\n

所以它可以有的最大值是 2\xc2\xb3\xc2\xb9 - 1

\n

2147483647

\n