如何在rails中输入更大的整数值(超过10位数)

时间:2015-04-17 07:34:32

标签: mysql ruby-on-rails ruby ruby-on-rails-4 activerecord

我创建了一个类似

的模型
rails g model Office name:string location:string phone_no:integer

然后,如果我给10个数字的phone_no赋值,则显示像

这样的错误
  

ActiveRecord :: StatementInvalid:Mysql2 :: Error:列超出范围值

如何提供超过10位的数字?

那么我怎么能克服这个......!

3 个答案:

答案 0 :(得分:3)

我总是在数据库中使用string类型列来保存电话号码。如果由于某种原因你需要有一个int值,你可以随时打电话给.to_i,但我通常不会。

优点是您可以在其表单字段中添加+字符来定义区号。

缺点是您可能需要验证表单中字段的数字。

答案 1 :(得分:1)

整数(4个字节)具有最大值范围:

-2147483648  ->  2147483647
0  ->  4294967295 (unsigned )

由于溢出,您收到此错误。您可以使用bigint代替,它有8个字节,您就可以了。

-9223372036854775808  ->  9223372036854775807
0  ->  18446744073709551615 (unsigned)

答案 2 :(得分:0)

如果您使用的是mysql,那么您可以像这样使用bigint

change_column :user, :mobile, :int8, :limit => 8

这个limit => 8会让它变得更大。

希望这有帮助。