我正在发出2个查询,一个按照我需要的顺序收集ID,然后将它们传递到获取信息的第二个查询中,这是我的第一个查询:
Location.near([lat, lng], 1, units: :km).order("distance").map(&:id)
每个Location
都有一个关联的Venue
,我这样查询:
Venue.where("location_id IN (?)", location_ids)
我希望查询的场地在各自的位置具有相同的顺序。例如,如果位置1是第一个具有ID 5的位置并且与ID为10的场所相关联,则我希望该场地也是第二个查询中的第一个结果。
答案 0 :(得分:0)
您需要在提取venues
后依据location_ids
订购:
我假设您在地点belongs_to :location
中有关联:
class Venue < ActiveRecord::Base
belongs_to :location
end
所以你的代码将是:
location_ids = Location.near([lat, lng], 1, units: :km).map(&:id)
Venue.joins(:location).where(locations: {id: location_ids }).order("locations.distance")