我创建了一个类似
的模型rails g model Office name:string location:string phone_no:integer
然后,如果我给10个数字的phone_no赋值,则显示像
这样的错误ActiveRecord :: StatementInvalid:Mysql2 :: Error:列超出范围值
如何提供超过10位的数字?
那么我怎么能克服这个......!
答案 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
会让它变得更大。
希望这有帮助。