関連する2つのレールモデルがあります
class Location < ActiveRecord::Base
has_many :rates
geocoded_by ....
end
class Rate < ActiveRecord::Base
belongs_to :location
end
私はジオコーダーの宝石を使用しています - http://www.rubygeocoder.com
pair
ユーザーから特定の距離内にある特定の属性を持つすべての料金を検索したいと考えています。
SQL では、レートに対して内部結合を実行します。
SELECT * FROM rates INNER JOIN locations ON rates.location_id=locations.id;
次に、ペア属性でフィルタリングする where 条件を挿入し、結果のテーブルで Geocoder の near メソッドを使用します (near メソッドは、場所の緯度と経度の属性を使用して距離を計算するクエリに where 条件を挿入することで機能します)。適切な距離内の行のみを選択する
レールでこれを行うにはどうすればよいですか? 私は試した
rates = Rate.joins(:locations)
私は得る
ActiveRecord::ConfigurationError: Association named 'locations' was not found; perhaps you misspelled it?
やりたい
rates = Rate.joins(:locations).near(my_latitude, my_longitude, distance).where(:rates => {:pair => 'xxxx'})
しかし、私は得る
undefined method `near' for #<ActiveRecord::Relation:0xa075ff8>