Rails 6, типы столбцов с плавающей точкой или bigint обрабатываются ActiveRecord как целочисленные - PullRequest
3 голосов
/ 25 марта 2020

Мне нужно принять очень большие целочисленные значения в столбце postgres в таблице pre_transaction. Имя столбца give_amount.

Я попытался изменить тип столбца на bigint с помощью:

change_column :pre_transactions, :give_amount, :bigint

, но при попытке сохранить запись даже после перезапуска все равно появляется следующая ошибка консоль:

ActiveModel::RangeError (1000000000000000000000 is out of range for ActiveModel::Type::Integer with limit 8 bytes)

Я также понял, что если я запускаю PreTransaction в консоли rails, столбцы bigint отображаются как столбцы integer (то же самое для внешних ключей, которые указаны в схеме как bigint). но выглядят как целое число на рельсах c), что странно.

Именно поэтому я изменил тип столбца на float. Теперь, когда я запускаю PreTransaction в консоли rails, я вижу столбец типа float, но теперь, когда я пытаюсь сохранить запись, она сохраняет, но округляет до 1,0.

Итак, как я могу хранить очень большие целые числа в базе данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...