ジオコーディングされた2つのモデルがあります。モデルの1つはClientです。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
今、私はクライアントの半径20km近くにあるホテルを見つける方法が必要です。私は試しました@client.nearbys(20)
が、それは私が近くのホテルが欲しい近くの他のクライアントを私に与えるでしょう。
誰か助けてください。前もって感謝します :)
私が理解できる限り、あなたはクライアントから20km以内にあるホテルを見つけなければなりません。
したがって、クライアントの緯度と経度を見つけることができるので、その緯度と経度から20km離れたホテルを検索できます。
[email protected]
[email protected]
Hotel.near([lat,long], 20, :units => :km)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加