X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/cb4f1e62a0c1ef87db0ae60b024e77f6502fe394..2c837d896dfb324346578440d9376a7ea75d4f42:/app/models/changeset.rb?ds=sidebyside diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 8f9a1e69b..0a0b6462b 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -3,7 +3,7 @@ class Changeset < ActiveRecord::Base belongs_to :user - has_many :changeset_tags, :foreign_key => 'id' + has_many :changeset_tags has_many :nodes has_many :ways @@ -20,6 +20,8 @@ class Changeset < ActiveRecord::Base validates_numericality_of :user_id, :integer_only => true validates_numericality_of :num_changes, :integer_only => true, :greater_than_or_equal_to => 0 + before_save :update_closed_at + # over-expansion factor to use when updating the bounding box EXPAND = 0.1 @@ -52,7 +54,7 @@ class Changeset < ActiveRecord::Base def self.from_xml(xml, create=false) begin - p = XML::Parser.string(xml) + p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR) doc = p.parse doc.find('//osm/changeset').each do |pt| @@ -175,13 +177,13 @@ class Changeset < ActiveRecord::Base self.save! tags = self.tags - ChangesetTag.delete_all(['id = ?', self.id]) + ChangesetTag.delete_all(:changeset_id => self.id) tags.each do |k,v| tag = ChangesetTag.new + tag.changeset_id = self.id tag.k = k tag.v = v - tag.id = self.id tag.save! end end @@ -191,7 +193,7 @@ class Changeset < ActiveRecord::Base # set the auto-close time to be one hour in the future unless # that would make it more than 24h long, in which case clip to # 24h, as this has been decided is a reasonable time limit. - def before_save + def update_closed_at if self.is_open? if (closed_at - created_at) > (MAX_TIME_OPEN - IDLE_TIMEOUT) self.closed_at = created_at + MAX_TIME_OPEN