我正在从ActiveRecord::Relations
方法GeoKit-Rails
返回一系列in_range
。我想将所有这些结合起来,以便它们可以在控制器动作中作为对象数组返回。
代码:
def find_panels_within_radius_of_poi(min_range, max_range, points_of_interest)
panels = Array.new
points_of_interest.each do |poi_id|
poi = PointOfInterest.find(poi_id)
panels << Panel.in_range(min_range..max_range, :origin => poi.origin)
end
panels.each do |panel|
puts panel
end
panels
end
当前代码为我提供了ActiveRecord::Relations
的数组,如下所示:
[
#<ActiveRecord::Relation []>,
#<ActiveRecord::Relation []>,
#<ActiveRecord::Relation [#<Panel id: "00c077c8-047d-4cd7-8c24-5ca96f5bf9fa", geopath_panel_id: nil, plant_unit_id: "1307", structure_id: nil,....
]
如何合并这些?我知道有一个ActiveRecord::Relation Merge
方法,但是先检索第一个项目然后将后续项目merged
放入其中看起来会很混乱。有没有一种功能上可以实现的方式,例如我可以使用Elixir's Reduce Method来实现的方式。
编辑:
我目前的工作代码(如下),尽管我认为我应该能够执行与Andrey Deineko所建议的类似的操作。
def find_panels_within_radius_of_poi(min_range, max_range, points_of_interest)
panels = Array.new
points_of_interest.each do |poi_id|
poi = PointOfInterest.find(poi_id)
panels << Panel.in_range(min_range..max_range, :origin => poi.origin)
end
panels.flatten
end