Внутреннее соединение Rails в сочетании с геокодированием
У меня есть 2 модели рельсов
class Location < ActiveRecord::Base
has_many :rates
geocoded_by ....
end
class Rate < ActiveRecord::Base
belongs_to :location
end
Я использую Geocoder Gem -http://www.rubygeocoder.com
Я хочу найти все тарифы с определеннымpair
атрибут, который находится на определенном расстоянии от пользователя.
В SQL я бы сделал внутреннее соединение по ставкам
SELECT * FROM rates INNER JOIN locations ON rates.location_id=locations.id;
Затем вставьте условие 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 #