首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails模型验证在整数大数字输入(“超出范围")上失败

Rails模型验证在整数大数字输入(“超出范围")上失败
EN

Stack Overflow用户
提问于 2015-02-27 08:50:42
回答 1查看 4.5K关注 0票数 3

我在我的模型中有Integer属性,为此我需要后端验证(它应该最多只有7个数字)。在我的模型中,我做了一些验证,比如:

代码语言:javascript
运行
复制
validates :duration, format: { with: /([0-9]{1,7})/ }
validates :duration, numericality: { less_than_or_equal_to: 9999999 }

当我试图将字母放入表单时(它返回的不是数字‘错误),当我输入有效的整数(11045555 -返回“必须小于或等于9999999”)时工作得很好,但是当我输入非常大的数字时,它就会崩溃--比方说11045555766666666666。错误为"11045555766666666666超出ActiveRecord::Type::整数的范围,限制为4“

当用户输入这么大的数字时,我如何才能跳过这个崩溃?

我使用mysql2 DB。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-27 10:51:53

您必须声明迁移文件的限制。默认情况下,整数以4个字节编码,因此限制为2147483647

如果您想要设置更大的限制,请按以下方式声明

代码语言:javascript
运行
复制
add_column :yourtable, :duration, :integer, :limit => 8

8个字节有一个9223372036854775807限制。

只要检查一下How to specify the size of an integer in the migration script

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28760869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档