У меня есть следующие модели/отношения:Rails получить коллекцию родителей от детей
class Directory < ActiveRecord::Base
has_one :location
end
class Location < ActiveRecord::Base
belongs_to :directory
geocoded_by :full_address
end
Location
использует в geocoder
камень. Каждая запись каталога имеет местоположение, а также информацию каталога (контакты, веб-сайт и т. Д.).
В directory#index
, я хотел бы показать местоположения вблизи места поиска пользователя. До сих пор у меня есть:
def index
if params[:search].present?
@directories = Location.near(params[:search], 50, :order => :distance).paginate(page: params[:page], :per_page => 10)
else
@directories = Directory.order(:name).paginate(page: params[:page], :per_page => 10)
end
end
Как вернуть коллекцию записей в каталоге (родительских), соответствующих местоположению (детям)?
Спасибо Алексею за подробный ответ, но он не работает для меня. Я подозреваю, что это связано с тем, что у меня есть отношение 'has_one' между родительским и дочерним, поэтому ассоциация' locations' отсутствует. Я попытался сделать это «location», но это, похоже, не помогло. Я думаю, что буду придерживаться своего подхода (не так уж плохо, поскольку у меня есть отношения к одному от родителей и ребенка), но, надеюсь, ваш ответ может помочь кому-то другому. –
О, очень жаль. Я не думаю, что 'has_one' является проблемой, может быть, это' geocoder' генерирует тяжелый запрос, о котором я не знаю. Тем не менее, я рад, что вы решили свою проблему :) –