2016-12-16 2 views
0

У меня есть 2 модели, которые имеют геокодирование. Одной из моделей является Client.I обновляет местоположение модели клиента на основе их IP. Вот как это выглядитRails Geocoder, Найти все Model1 near Model2

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

Пока я понимаю, вам нужно найти отель, который находится в 20 км от клиента.

Так как вы можете найти широту и долготу клиента, вы можете найти отель, который находится в 20 км от этого лат и долго.

[email protected] 
[email protected] 

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

Большое спасибо, очень ценю это. Я новичок в рельсах :). Это сработало как шарм – Shadid

+0

@Shadid Я рад, что это помогло вам :) –

Смежные вопросы