2

次の問題があります。

属性を持つ2つのモデルを考えてみましょう。

Place
- lat
- lng
- range

User
- lat
- lng

場所には場所といくつかの範囲が定義されています(配送エリアと考えてください)。ユーザーは自分の場所を持っています。

ジオロケーションにはGeocoderを使用しています(Geokitも使用できます)。オブジェクトまでの距離を計算できます(object.distance_to([lat、lng])のようなもの)

ここで、自分の場所を含む範囲のすべての場所を選択したいと思います。より高いレベルで:どの場所が私の場所の配送を提供しているか知りたいです。

与えられた範囲のオブジェクトのコレクションを探しているときは、より簡単です。しかし、私は「逆転した」何か、別の側面からの何かが必要です。

どのメソッド/スコープを書く必要がありますか?たぶん、Geocoder / Geokitは私のためにすでに何かを持っていますか?

4

1 に答える 1

2

最後に、宝石には何も見つかりませんでしたが、次のメソッドを書きました

class User < ActiveRecord::Base
  #...  
  def in_reach?(place)
    place.distance_to([lat,lng]) <= place.range
  end 
end
于 2011-11-23T11:13:33.777 に答える