PG :: NumericValueOutOfRange: ОШИБКА: значение «34531513513513» выходит за пределы диапазона для целочисленного типа - PullRequest
1 голос
/ 21 апреля 2020

Мне нужно было проверить создание записи в базе данных. Я перешел на страницу с формой, случайно ввел значение «34531513513513» в поле заголовка. Выбранные значения из выбора для принадлежат. И в конце я нажал «Добавить».

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

ActiveRecord :: RangeError - PG :: NumericValueOutOfRange: ERROR: значение «34531513513513» выходит за пределы диапазона для целочисленного типа

Ошибка вызвана этим кодом:

scope :order_by_title, (lambda do
  order(Arel.sql("left(lower(posts.title), 1), substring(posts.title, '\\d+')::int NULLS FIRST, posts.title"))
end)

В частности:

substring(posts.title, '\\d+')::int

Подскажите, пожалуйста, как мне исправить этот код? Но логика сортировки c должна быть сохранена.

PS Я понимаю, что для меня это, скорее всего, очень редкая ошибка в производстве (потому что с вероятностью 99% я не буду использовать такие большие числа в заголовках). Но мне все еще интересно, как решить эту проблему.

...