]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/relation.rb
Merge data browser branch to trunk.
[rails.git] / app / models / relation.rb
index cedfaf656250e25b01f148b8c8175f13153e035b..9ee118f6e0c22fb26f4bff0012e30e3cb2c92173 100644 (file)
@@ -1,14 +1,17 @@
 class Relation < ActiveRecord::Base
   require 'xml/libxml'
   
+  set_table_name 'current_relations'
+
   belongs_to :user
 
+  has_many :old_relations, :foreign_key => 'id', :order => 'version'
+
   has_many :relation_members, :foreign_key => 'id'
   has_many :relation_tags, :foreign_key => 'id'
 
-  has_many :old_relations, :foreign_key => 'id', :order => 'version'
-
-  set_table_name 'current_relations'
+  has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
+  has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder
 
   def self.from_xml(xml, create=false)
     begin
@@ -102,29 +105,6 @@ class Relation < ActiveRecord::Base
     return el1
   end 
 
-    
-  # collect relationships. currently done in one big block at the end;
-  # may need to move this upwards if people want automatic completion of
-  # relationships, i.e. deliver referenced objects like we do with ways... 
-  # FIXME: rip out the fucking SQL
-  def self.find_for_nodes_and_ways(node_ids, way_ids)
-    relations = []
-
-    if node_ids.length > 0
-      relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
-            "e.visible=1 and " +
-            "em.id = e.id and em.member_type='node' and em.member_id in (#{node_ids.join(',')})")
-    end
-    if way_ids.length > 0
-      relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
-            "e.visible=1 and " +
-            "em.id = e.id and em.member_type='way' and em.member_id in (#{way_ids.join(',')})")
-    end
-
-    relations # if you don't do this then it returns nil and not []
-  end
-
-
   # FIXME is this really needed?
   def members
     unless @members
@@ -254,4 +234,8 @@ class Relation < ActiveRecord::Base
     return false
   end
 
+  # Temporary method to match interface to nodes
+  def tags_as_hash
+    return self.tags
+  end
 end