【问题标题】:bignum too big to convert into `long' rails adminbignum 太大而无法转换为“长”导轨管理员
【发布时间】:2016-04-07 07:08:56
【问题描述】:

我正在尝试通过在过滤器文本字段中输入值 569785067261691692240000 在 Rails 管理面板中搜索记录。我收到一个错误“bignum too big to convert into `long'”。

如果过滤器文本字段中的文本是字母数字,则搜索工作正常,但如果文本是数字,则搜索不起作用。

无法理解问题所在。

我正在使用 0.6.3 版本的 rails admin gem。

【问题讨论】:

  • 您的表的架构定义是什么?管理工具可能需要 32 位无符号。
  • Rails 管理面板有一个搜索字段,其中只能给出值(所有类型)。它不要求必须执行搜索的字段。它会自动搜索 mongo 集合的所有文档。 ID 字段是定义的 mongo 表中的 BSON 类型字段,可以是数字或字母数字。搜索适用于字母数字值,但不适用于数值。
  • 如果适用,应标记此mongodb

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems rails-admin


【解决方案1】:

您的字段可能被定义为整数/长字段,仅限于2^322^64。如果您希望能够输入这么长的数字,请将其设为字符串。

【讨论】:

  • Id 不是整数/长字段。我正在使用 mongoid gem 为集合生成 id。这个 gem 为 id 生成一个唯一的字符串字段(4 字节时间戳 + 3 字节机器 id + 3 字节进程 id + 4 字节计数器)。问题是生成数字 id 时,然后我尝试在 rails 管理面板中使用此 id 进行搜索。 Rails 管理面板不要求搜索字段类型,它只需要搜索值并搜索完整的集合。
  • 我明白了...Rails 管理面板正在尝试以某种方式将您的 id 转换为长字段。您在这里有两个选择:要么将搜索字段截短并使用 LIKE 进行查询,要么询问 Rails 管理面板是否已知此兼容​​性问题(他们的 github 页面上似乎也有很多问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多