Имена столбцов в SQL не чувствительны к регистру, если они не были заключены в кавычки при их создании.Кто-то создал ваш столбец startIpNum
с кавычками вокруг него, поэтому вы должны заключать его в кавычки при каждом его использовании:
GeoliteBlock.where('"startIpNum" >= ?', 2776360991)
Ошибка, которую вы получаете от PostgreSQL, упоминает startipnum
, потому что PostgreSQL нормализует идентификаторы для уменьшенияcase (стандарт SQL говорит, что они должны быть нормализованы к верхнему регистру).
Это:
GeoliteBlock.find_by_startIpNum 2776360991
работает, потому что AR процитирует часть startIpNuM
за вашей спиной.Аналогичным образом, GeoliteBlock.where(:startIpNum => 2776360991)
также будет работать.
Я бы порекомендовал вам изменить схему на использование имен столбцов в нижнем регистре, чтобы вам больше не пришлось об этом беспокоиться.