area
имеет много coordinates
coordinate
модель имеет два атрибута: latitude
и longitude
Есть ли способ рефакторить это? Прямо сейчас это работает, но выполняет запрос типа n+1:
areas.each_with_object([]) do |area, array|
geokit_lat_lngs = area.coordinates.order(sequence: :asc).map do |coordinate|
Geokit::LatLng.new(coordinate.latitude, coordinate.longitude)
end
polygon = Geokit::Polygon.new(geokit_lat_lngs)
point = Geokit::LatLng.new(latitude, longitude)
array << area.id if polygon.contains?(point)
end
Я пытаюсь получить все areas
, под которые подпадают latitude
и longitude
Я использую гем Geokit, но буду рад переключиться, если есть что-то более эффективное, чем я должен заниматься.