Как мне сохранить целочисленные рельсы от преобразования в двоичный файл?

Как вы можете видеть на рисунке, у меня есть модель User, и @user.zip хранится как целое число для целей проверки (т. Е. Сохраняются только цифры и т. Д.). Я исправлял ошибку, когда обнаружил, что мой образец почтового индекса (00100) автоматически преобразуется в двоичный файл и заканчивается числом 64.

Есть идеи, как этого избежать? Я новичок в Rails, и мне понадобилось несколько часов, чтобы выяснить причину этой ошибки, как вы можете себе представить:)

Я не могу представить какую-либо другую информацию, которая будет полезна здесь, но, пожалуйста, сообщите мне, если не так.

2 ответа

Решение

Это не бинарный, это восьмеричный.

В Ruby любое число, начинающееся с 0, будет рассматриваться как восьмеричное число. Вы должны проверить числовые литералы Ruby, чтобы узнать больше об этом, вот цитата:

Вы можете использовать специальный префикс для записи чисел в десятичном, шестнадцатеричном, восьмеричном или двоичном форматах. Для десятичных чисел используйте префикс 0d, для шестнадцатеричных чисел - префикс 0x, для восьмеричных чисел - префикс 0 или 0o, для двоичных чисел - префикс 0b. Буквенная составляющая числа не чувствительна к регистру.

В вашем случае вы не должны хранить почтовые индексы в виде чисел. Не только в базе данных, но даже когда переменные не обрабатывают их как числовые значения. Вместо этого храните и рассматривайте их как строки.

Zip, вероятно, должен храниться в виде строки, так как вы не можете иметь действительное целое число с ведущими нулями.

Другие вопросы по тегам