Ruby on rails 整数大数字输入时Rails模型验证失败(“超出范围”)

Ruby on rails 整数大数字输入时Rails模型验证失败(“超出范围”),ruby-on-rails,validation,integer,Ruby On Rails,Validation,Integer,我的模型中有Integer属性,我需要后端验证(最多应该是7个digts)。 在我的模型中,我进行了一些验证,如: validates :duration, format: { with: /([0-9]{1,7})/ } validates :duration, numericality: { less_than_or_equal_to: 9999999 } 当我尝试将字母放入表单时(它返回“不是数字”错误),当我放入有效整数时(11045555-返回“必须小于或等于999999”)效果很好

我的模型中有Integer属性,我需要后端验证(最多应该是7个digts)。 在我的模型中,我进行了一些验证,如:

validates :duration, format: { with: /([0-9]{1,7})/ }
validates :duration, numericality: { less_than_or_equal_to: 9999999 }
当我尝试将字母放入表单时(它返回“不是数字”错误),当我放入有效整数时(11045555-返回“必须小于或等于999999”)效果很好,但当我放入真正大的数字时(比如11045555766666),它会崩溃。错误为“110455557666超出ActiveRecord::Type::Integer的范围,限制为4”

当用户输入那个大数字时,我如何跳过这个崩溃


我使用mysql2db。

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

如果你想设定一个更大的限制,像这样声明它

add_column :yourtable, :duration, :integer, :limit => 8
8个字节有一个
9223372036854775807
限制


只需检查

尝试更新rails,它是固定的-这不是一个好方法,因为它只会增加存储在数据库中的字段的大小。很明显,他实际上不会在数据库中存储大量的数字,因此他不应该增加那里的整数大小。我面临着同样的问题,不希望仅仅为了解决这个bug而增加到int(8)。