Я использую гем Geocoder для получения геокода Locations
, из которых принадлежит Event
.Event
has_many Locations
.
Мне нужно вернуть запрос всех событий, которые .near
(метод геокодера) и params[:zipcode]
.
Первая строка ниже возвращает правильную коллекцию @locations, но я не знаю, как включить Event
s, которые имеют эти Locations
, так как они являются массивом Locations.
@locations = Location.near("#{params[:zipcode]}", params[:within])
@events = Events.joins(:locations).where(location: {any of the @locations})
Я чувствую, что это довольно просто ... но у меня пробел!
Возможно ли сделать эту одну строку?Что-то вроде:
@events = Events.joins(:locations).where(location: address.near("#{params...})
Таблица Location
имеет :address :latitude :longitude
в БД (геокодировано: адрес).
Модель местоположения:
class Location < ApplicationRecord
belongs_to :event
geocoded_by :address
after_validation :geocode
end
Событиемодель:
class Event < ApplicationRecord
belongs_to :user
has_many :locations, dependent: :delete_all
accepts_nested_attributes_for :locations, reject_if: :all_blank, allow_destroy: true
end