way_ids = way_nodes.collect { |way_node| way_node.id[0] }
ways = Way.preload(:way_nodes, :way_tags).find(way_ids)
- list_of_way_nodes = ways.collect do |way|
- way.way_nodes.collect(&:node_id)
- end
- list_of_way_nodes.flatten!
+ list_of_way_nodes = ways.flat_map { |way| way.way_nodes.map(&:node_id) }
end
# - [0] in case some thing links to node 0 which doesn't exist. Shouldn't actually ever happen but it does. FIXME: file a ticket for this
nodes += Node.includes(:node_tags).find(nodes_to_fetch) unless nodes_to_fetch.empty?
- visible_nodes = {}
- @nodes = []
- nodes.each do |node|
- if node.visible?
- visible_nodes[node.id] = node
- @nodes << node
- end
- end
+ @nodes = nodes.filter(&:visible?)
- @ways = []
- way_ids = []
- ways.each do |way|
- if way.visible?
- way_ids << way.id
- @ways << way
- end
- end
+ @ways = ways.filter(&:visible?)
- @relations = Relation.nodes(visible_nodes.keys).visible +
- Relation.ways(way_ids).visible
+ @relations = Relation.nodes(@nodes).visible +
+ Relation.ways(@ways).visible
# we do not normally return the "other" partners referenced by an relation,
# e.g. if we return a way A that is referenced by relation X, and there's