我们如何获取特定城市范围内的用户列表?

时间:2019-04-03 02:46:10

标签: ruby-on-rails ruby elasticsearch

我有外地城市用户列表。我们如何获取距特定城市约200公里的用户列表?

我正在使用地理编码器gem查找最近的位置。但是,如何仅在城市中为用户使用lat和lon而不显示lat和lon?

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 :(得分:0)

作为geocoder docs状态,您可以轻松地对用户进行地理编码。

在您的模型中:

  • 将列$new_recipe_model = $existing_recipe_model->replicate(); $new_recipe_model->user_id = Auth::user()->id; $new_recipe_model->save(); latitude添加到模型中。
  • 告诉地理编码器如何对方法进行地理编码:longitude
  • 添加回调:geocoded_by :address

答案 1 :(得分:0)

在您的问题中提到,您已经在用户表中拥有名为“ city”的字段。

(参考:https://github.com/alexreisner/geocoder#geocoding-objects

尝试一下:

SpreeUser.near('Austin', 200, units: :km)      # users within 200 kms of Austin city