Как мы можем получить список пользователей в пределах определенного города? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть список пользователей с полем city. Как мы можем получить список пользователей, которые находятся примерно в 200 км от определенного города?

Я использую geocoder gem, чтобы найти ближайшее местоположение. Тем не менее, как мы можем сделать это только через город без присутствия в базе данных для пользователя?

user = User.last    
user.address = 'Sydney'
location = Geocoder.search(user.address).first
lat = location.latitude
lon = location.longitude

within_user = SpreeUser.near([lat, lon], 200, units: :km)

Это даст ошибку, потому что широта и долгота не существует для пользователя. Есть ли способ сделать это через другое поле, например, адрес в этом случае?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Как уже упоминалось в вашем вопросе, у вас уже есть поле с именем 'city' в таблице пользователей.

(ссылка: https://github.com/alexreisner/geocoder#geocoding-objects)

Попробуйте это:

SpreeUser.near('Austin', 200, units: :km)      # users within 200 kms of Austin city
0 голосов
/ 03 апреля 2019

В качестве состояния геокодера вы можете легко геокодировать своих пользователей.

В вашей модели:

  • Добавить столбцы latitude и longitudeк вашей модели.
  • Скажите геокодеру, как метод геокодировать: geocoded_by :address
  • Добавьте обратный вызов: after_validation :geocode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...