Rails Geocoder,找到Model2附近的所有Model1

时间:2016-12-16 08:19:21

标签: ruby-on-rails geolocation geocoding rails-geocoder

我有两个地理编码的模型。其中一个模型是Client.I根据其IP更新客户端模型的位置。这是它的外观

class Client < ApplicationRecord
  geocoded_by :ip_address
  after_validation :geocode, :if => :ip_address_changed?
end

这是我的客户控制器

class ClientController < ApplicationController
    def index
        if client_signed_in?
            u = current_client
            u.ip_address = request.remote_ip
            u.save
        end
    end
end

现在您可以看到我更新了客户端的当前IP,并根据我在:longitude:latitude属性中保存客户端的位置

现在我有另一个名为Hotels的模特。此模型具有不会更改的地址属性。

class Hotel < ApplicationRecord
  geocoded_by :address
  after_validation :geocode, :if => :address_changed?
end

现在我需要一种方法,这样我才能找到距离客户半径20公里的酒店。我试过@client.nearbys(20),但这会给我附近的其他客户,我想要附近的酒店。

有人请帮忙。在此先感谢:)

1 个答案:

答案 0 :(得分:1)

只要我能理解你必须找到距离客户20公里范围内的酒店。

因此,既然您可以找到客户的纬度和经度,那么您可以搜索距离该纬度20公里的酒店。

lat=@client.latitude
long=@client.longitude

Hotel.near([lat,long], 20, :units => :km)