2016-12-16 70 views
0

我有一个地理编码的2个模型。其中一个模型是Client.I根据IP更新客户端模型的位置。下面是它的外观Rails地理编码器,查找Model2附近的所有Model1

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属性

现在我有另一个名为酒店的模型。该模型具有不会更改的地址属性。

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

现在我需要一种方法,以便我可以找到离客户端近20公里范围内的酒店。我尝试过@client.nearbys(20),但那会让附近其他客户想要附近的酒店。

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

回答

1

只要我明白你必须找到距离客户20公里内的酒店。

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

[email protected] 
[email protected] 

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

非常感谢,非常感谢。我是一个铁轨新手:)。这就像一个魅力 – Shadid

+0

@Shadid我很高兴它帮助你:) –

相关问题