Rails 地理编码器,查找 Model2 附近的所有 Model1
Rails Geocoder, Find all Model1 near Model2
我有 2 个经过地理编码的模型。其中一个模型是 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
属性中
现在我有另一个名为酒店的模型。此模型具有不会更改的地址属性。
class Hotel < ApplicationRecord
geocoded_by :address
after_validation :geocode, :if => :address_changed?
end
现在我需要一种方法来找到客户半径 20 公里附近的酒店。我试过 @client.nearbys(20)
但这会给我附近的其他客户我想要附近的酒店。
有人请帮助。提前致谢:)
只要我能理解你必须找到客户20公里以内的酒店。
既然你能找到客户的经纬度,你就可以搜索距离该纬度和经度 20 公里的酒店。
lat=@client.latitude
long=@client.longitude
Hotel.near([lat,long], 20, :units => :km)
我有 2 个经过地理编码的模型。其中一个模型是 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
属性中
现在我有另一个名为酒店的模型。此模型具有不会更改的地址属性。
class Hotel < ApplicationRecord
geocoded_by :address
after_validation :geocode, :if => :address_changed?
end
现在我需要一种方法来找到客户半径 20 公里附近的酒店。我试过 @client.nearbys(20)
但这会给我附近的其他客户我想要附近的酒店。
有人请帮助。提前致谢:)
只要我能理解你必须找到客户20公里以内的酒店。
既然你能找到客户的经纬度,你就可以搜索距离该纬度和经度 20 公里的酒店。
lat=@client.latitude
long=@client.longitude
Hotel.near([lat,long], 20, :units => :km)