]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/api/nodes/relations_controller.rb
Use subqueries to find nested members more efficiently
[rails.git] / app / controllers / api / nodes / relations_controller.rb
index 0f0409e1927a735213acac2dd1f1841365d9b0c4..c6b33eab81242767bfd6eb6a0f9df849a4bfd623 100644 (file)
@@ -6,13 +6,12 @@ module Api
       before_action :set_request_formats
 
       def index
-        relation_ids = RelationMember.where(:member_type => "Node", :member_id => params[:node_id]).collect(&:relation_id).uniq
-
-        @relations = []
-
-        Relation.find(relation_ids).each do |relation|
-          @relations << relation if relation.visible
-        end
+        @relations = Relation
+                     .visible
+                     .where(:id => RelationMember.where(
+                       :member_type => "Node",
+                       :member_id => params[:node_id]
+                     ).select(:relation_id))
 
         # Render the result
         respond_to do |format|