X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/413baecf6b27056cb73e6bb4bedb33de6410c65e..9d8ab7dbd11f9fff0faf82b948bf1a07e86aa5b7:/app/models/old_relation.rb?ds=sidebyside diff --git a/app/models/old_relation.rb b/app/models/old_relation.rb index 25f44d832..dc89afa50 100644 --- a/app/models/old_relation.rb +++ b/app/models/old_relation.rb @@ -60,24 +60,13 @@ class OldRelation < ActiveRecord::Base end def members - unless @members - @members = Array.new - OldRelationMember.where(:relation_id => self.relation_id, :version => self.version).order(:sequence_id).each do |m| - @members += [[m.type,m.id,m.role]] - end + @members ||= self.old_members.collect do |member| + [member.member_type, member.member_id, member.member_role] end - @members end def tags - unless @tags - @tags = Hash.new - OldRelationTag.where(:relation_id => self.relation_id, :version => self.version).each do |tag| - @tags[tag.k] = tag.v - end - end - @tags = Hash.new unless @tags - @tags + @tags ||= Hash[self.old_tags.collect { |t| [t.k, t.v] }] end def members=(s) @@ -95,26 +84,22 @@ class OldRelation < ActiveRecord::Base end def to_xml_node(changeset_cache = {}, user_display_name_cache = {}) - el1 = XML::Node.new 'relation' - el1['id'] = self.relation_id.to_s - add_metadata_to_xml_node(el1, self, changeset_cache, user_display_name_cache) + el = XML::Node.new 'relation' + el['id'] = self.relation_id.to_s + + add_metadata_to_xml_node(el, self, changeset_cache, user_display_name_cache) self.old_members.each do |member| - e = XML::Node.new 'member' - e['type'] = member.member_type.to_s.downcase - e['ref'] = member.member_id.to_s # "id" is considered uncool here as it should be unique in XML - e['role'] = member.member_role.to_s - el1 << e + member_el = XML::Node.new 'member' + member_el['type'] = member.member_type.to_s.downcase + member_el['ref'] = member.member_id.to_s # "id" is considered uncool here as it should be unique in XML + member_el['role'] = member.member_role.to_s + el << member_el end - self.old_tags.each do |tag| - e = XML::Node.new 'tag' - e['k'] = tag.k - e['v'] = tag.v - el1 << e - end + add_tags_to_xml_node(el, self.old_tags) - return el1 + return el end # Temporary method to match interface to nodes