前提・実現したいこと
いつもお世話になります。
ある施設の検索サイトを作っています。
ユーザーが「自宅」の住所を登録して会員登録すると、
自宅から近い順に施設を並び替えられる仕組みを構築中です。
発生している問題
通常並べ替えを使う際は、
特定のテーブルのカラムで以下のようにorderを利用すると思います。
モデル名.order(カラム名: "DESC")
ですが今回は
「Userモデルの緯度経度(latitude・longitude)」と
「Nursery(施設)モデルの緯度経度(latitude・longitude)」から
「2地点の距離」を計算して「2地点の距離」の昇順に並べ替えるという処理のため、
orderをどのように書くべきか考えあぐねております。
途中まで書いている式は以下の通りですが、目的から遠い状況と承知しておりますorz
ユーザーによって@distance(2地点間の距離)が異なるため
@distanceをdbに保存するわけにもいかず、、
def index @nurseries = Nursery.all @nurseries.each do |nursery| @distance = Geocoder::Calculations.distance_between ([current_user.latitude,current_user.longitude], [nursery.latitude,nursery.longitude]) end
※2地点の距離ががGeocoder::Calculations.distance_between
([current_user.latitude,current_user.longitude],
[nursery.latitude,nursery.longitude])というコードではじき出せることは確認済
※UserモデルとNurseryモデルにアソシエーションは無し
何か目的とする状態に至るために考え得る方法がございましたら、
ヒントをいただけないでしょうかm(._.)m
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/18 01:49