我正在使用Geocoder宝石来获取地理编码Locations
,其中地理编码属于Event
。 Event
has_many Locations
。
我需要返回所有.near
(地理编码器方法)为params[:zipcode]
的事件的查询。
下面的第一行返回正确的@location集合,但是我不知道如何包含具有Event
的{{1}},因为它们是位置数组。
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地理编码)。
位置模型:
:address :latitude :longitude
事件模型:
class Location < ApplicationRecord
belongs_to :event
geocoded_by :address
after_validation :geocode
end
答案 0 :(得分:0)
请在事件模型中编写以下代码
reverse_geocoded_by 'locations.latitude', 'locations.longitude'
或
geocoded_by 'locations.address'
编写此代码后,您可以直接点击事件模型附近的查询
Event.near("#{params[:zipcode]}", params[:within])