正如您可以在图像中看到的那样,我有一个用户模型,@ user.zip存储为整数用于验证目的(即,只存储数字等)。当我发现我的示例邮政编码(00100)被自动转换为二进制文件时,我正在对错误进行故障排除,结果为64号。
有关如何防止这种情况发生的任何想法?我是Rails的新手,我花了几个小时才弄清楚这个错误的原因,正如你可能想象的那样:)
我无法想象其他任何信息会对您有所帮助,但如果不是,请通知我。
答案 0 :(得分:1)
这不是二进制,这是octal。
在Ruby中,任何以0开头的数字都将被视为八进制数。您应该查看Ruby number literals以了解详情,请点击这里:
您可以使用特殊前缀以十进制,十六进制,八进制或二进制格式写入数字。对于十进制数字,使用前缀0d,对于十六进制数字,使用前缀0x,对于八进制数字,使用前缀0或0o,对于二进制数字,使用前缀0b。数字的字母组成部分不区分大小写。
对于您的情况,您should not store zipcodes as numbers。不仅在数据库中,而且即使变量不将它们视为数值。相反,将它们存储和处理为字符串。
答案 1 :(得分:-1)
zip应该存储为字符串,因为您不能拥有带有前导零的有效整数。