2016-12-16 9 views
0

지오 코딩 된 2 개의 모델이 있습니다. 모델 중 하나는 클라이언트입니다. IP 기반 클라이언트 모델의 위치를 ​​업데이트합니다. 그것은 여기레일 지오 코더, Model2 근처의 모든 Model1 찾기

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

보이는 당신은 내가 클라이언트의 현재 IP를 업데이트 볼 수 있듯이 이제 내 고객 컨트롤러

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

그리고 그 기반으로 내가 :longitude에서 클라이언트의 위치를 ​​저장하고 :latitude

속성 방법은 다음과

이제 호텔이라는 다른 모델이 있습니다. 이 모델에는 변경되지 않는 주소 속성이 있습니다.

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

이제 클라이언트의 20km 반경에 가까운 호텔을 찾을 수있는 방법이 필요합니다. 나는 @client.nearbys(20)를 시험해 보았습니다.하지만 그 호텔 근처에서 다른 고객이 근처에있는 곳을 원할 것입니다.

누군가 도와주세요. 미리 감사드립니다 :)

답변

1

나는 당신이 클라이언트의 20km 이내에있는 호텔을 찾아야 만 이해할 수 있습니다.

그래서 클라이언트의 위도와 경도를 찾을 수 있기 때문에 위도와 경도로부터 20km 떨어진 호텔을 검색 할 수 있습니다.

[email protected] 
[email protected] 

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

감사합니다. 정말로 감사드립니다. 나는 레일 초보자입니다 :). 그 매력처럼 작동 – Shadid

+0

@ Shadid 나는 그것이 당신을 도왔다 :) –