Мне нужно было проверить создание записи в базе данных. Я перешел на страницу с формой, случайно ввел значение «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% я не буду использовать такие большие числа в заголовках). Но мне все еще интересно, как решить эту проблему.