X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/87494900df0f40c734286139678d347af9c234b7..d9e070e06956801aba2378c1b79b4d9f13ae12ee:/app/models/relation.rb diff --git a/app/models/relation.rb b/app/models/relation.rb index eb3b06a13..e46da5ade 100644 --- a/app/models/relation.rb +++ b/app/models/relation.rb @@ -112,6 +112,36 @@ class Relation < ActiveRecord::Base return el1 end + def self.find_for_nodes(ids, options = {}) + if ids.empty? + return [] + else + self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'node' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do + return self.find(:all, options) + end + end + end + + def self.find_for_ways(ids, options = {}) + if ids.empty? + return [] + else + self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'way' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do + return self.find(:all, options) + end + end + end + + def self.find_for_relations(ids, options = {}) + if ids.empty? + return [] + else + self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'relation' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do + return self.find(:all, options) + end + end + end + # FIXME is this really needed? def members unless @members