結合我有兩個相關的軌道模型Rails的內連接與地理編碼寶石
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條件上對屬性進行篩選,然後使用上所得到的表的地理編碼器的接近方法(近方法通過使用經度和緯度上的位置屬性),只選擇合適的距離
我怎樣才能在軌做到這一點中的行插入一個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>
因爲它是一個belongs_to的,我想':locations'必須是單數。不知道這是否會起作用,但您可能需要重新排序您的方法調用。取決於創業板如何與ARel合作。 'Rate.near(my_latitude,my_longitude,距離)。加入(:位置)。凡(:率=> {:一對=> 'XXXX'})' – agmcleod