X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/fcc485725dac6c31c6e01db5142d15e9b35f6509..e15916ad5b081f94c433f1e0bb708be242dbe5ab:/app/models/way.rb diff --git a/app/models/way.rb b/app/models/way.rb index c6316d330..d86d82de6 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -142,54 +142,48 @@ class Way < ActiveRecord::Base @tags[k] = v end - def save_with_history - begin - Way.transaction do - t = Time.now - self.timestamp = t - self.save! - - tags = self.tags - - WayTag.delete_all(['id = ?', self.id]) - - tags.each do |k,v| - tag = WayTag.new - tag.k = k - tag.v = v - tag.id = self.id - tag.save! - end - - segs = self.segs + def save_with_history! + Way.transaction do + t = Time.now + self.timestamp = t + self.save! + + tags = self.tags + + WayTag.delete_all(['id = ?', self.id]) + + tags.each do |k,v| + tag = WayTag.new + tag.k = k + tag.v = v + tag.id = self.id + tag.save! + end - WaySegment.delete_all(['id = ?', self.id]) + segs = self.segs - i = 0 - segs.each do |n| - seg = WaySegment.new - seg.id = self.id - seg.segment_id = n - seg.sequence_id = i - seg.save! - i += 1 - end + WaySegment.delete_all(['id = ?', self.id]) - old_way = OldWay.from_way(self) - old_way.timestamp = t - old_way.save_with_dependencies! + i = 1 + segs.each do |n| + seg = WaySegment.new + seg.id = self.id + seg.segment_id = n + seg.sequence_id = i + seg.save! + i += 1 end - return true - rescue - return nil + old_way = OldWay.from_way(self) + old_way.timestamp = t + old_way.save_with_dependencies! end end def preconditions_ok? return false if self.segs.empty? self.segs.each do |n| - segment = Segment.find(n) + segment = Segment.find(:first, :conditions => ["id = ?", n]) unless segment and segment.visible and segment.preconditions_ok? return false end