Драгоценный камень Geocoder также является хорошим вариантом.
Однако, как указывали другие авторы, в какой-то момент вам понадобится перевести данные о вашем местоположении вниз на широту/долгота.Вы можете найти базы данных , такие как эта, из SoftwareTools , которые могут переводить почтовые индексы в широту / долготу, но точность невелика.Почтовые индексы несколько обманчивы;они сильно различаются по размеру, и их границы меняются с некоторой частотой.
Например, почтовый индекс 89049 покрывает площадь в 10 000 квадратных миль , поэтому расчет расстояния может бытьболее чем на сто миль, в зависимости от того, где в почтовом индексе находится пользователь.
Было бы лучше использовать инструмент геолокации для перевода адреса улицы каждого пользователя в широту / долготу и использовать его для своего расстояния.расчеты.В этом может помочь Haversine gem , или, если вы используете PostgreSQL, вы можете использовать модуль защиты от земли .
(я не имею никакого отношения к SoftwareTools, кроме какдовольный клиент.)