1

Rails を使用して、レストランの配達範囲を検索する方法を探しています。

たとえば、場所と旅行を希望するマイルを格納するレストラン モデルがあります。

サイトの訪問者が検索フィールドに郵便番号を入力すると、その郵便番号がレストランの配達範囲内にある場合、そのレストランが検索結果として返されます。

現在、ジオコーダーの宝石を使用していますが、特定のポイントの範囲または半径を保存する方法がないようです。「検索場所から 5 マイル以内のレストラン」は検索できますが、「訪問者の検索キーワードが配達範囲に含まれるレストラン」は検索できません。

私は無知なので、SQL やその他の言語を含むものはおそらく実行できません。なんらかのロジック ハックがあることを願っています...たとえば、各レストランをループして、.nearby の結果に訪問者の検索の郵便番号が含まれているかどうかを確認します。

また、これが以前に尋ねられた場合はお詫び申し上げます。Ruby on Rails に固有のものは見当たりませんでした。

4

1 に答える 1

0

zip_codes のみを使用する場合は、指定された 2 つの郵便番号間の距離をマッピングした距離テーブルを作成できます。それ自体が多対多のテーブルのようになります。ID は郵便番号である可能性があり、次のようなメソッドを持つことができます。

def distance_to(zip_code)
  # Find row where two zip_codes are defined and the saved distance
end

しかし、これが必ずしもデータに保持したいものであるかどうかはわかりません。いくつかの理由から、1 つは、郵便番号のために住んでいる地域が異なり、その距離が一貫していないことです。最後に、すでにこれを行うために使用できるものがたくさんあります。

次に、maps API を検討することを検討してください。Google、Bing、OpenStreetMaps、または適切なAPIを備えたその他のマッピングサービスで、座標と返された距離を入力するだけで、ユーザーが範囲内にあるかどうかを判断できます.

このようにして、エッジケースを処理し、そのデータの保存について心配する必要がなくなります. また、必要に応じて、より高いレベルの精度を準備します。

于 2013-08-14T02:59:11.983 に答える