X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/bed9cd00ed166ce346da4b8a9b654ddf86e64e70..afcb345014d98914cd4f5d6b14ca2e30feac194c:/app/models/relation.rb diff --git a/app/models/relation.rb b/app/models/relation.rb index 64af4ecc1..a8789bc78 100644 --- a/app/models/relation.rb +++ b/app/models/relation.rb @@ -33,7 +33,7 @@ class Relation < ActiveRecord::Base doc.find('//osm/relation').each do |pt| return Relation.from_xml_node(pt, create) end - rescue LibXML::XML::Error => ex + rescue LibXML::XML::Error, ArgumentError => ex raise OSM::APIBadXMLError.new("relation", xml, ex.message) end end @@ -51,7 +51,7 @@ class Relation < ActiveRecord::Base # The follow block does not need to be executed because they are dealt with # in create_with_history, update_from and delete_with_history if create - relation.timestamp = Time.now + relation.timestamp = Time.now.getutc relation.visible = true relation.version = 0 else @@ -253,6 +253,7 @@ class Relation < ActiveRecord::Base raise OSM::APIPreconditionFailedError.new end self.changeset_id = new_relation.changeset_id + self.changeset = new_relation.changeset self.tags = new_relation.tags self.members = new_relation.members self.visible = true @@ -333,7 +334,7 @@ class Relation < ActiveRecord::Base # changed then we have to monitor their before and after state. tags_changed = false - t = Time.now + t = Time.now.getutc self.version += 1 self.timestamp = t self.save! @@ -372,6 +373,10 @@ class Relation < ActiveRecord::Base tag.id = self.id tag.save! end + + # reload, so that all of the members are accessible in their + # new state. + self.reload # same pattern as before, but this time we're collecting the # changed members in an array, as the bounding box updates for