+ 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
+
+ nds = self.nds
+ WayNode.delete_all(['id = ?', self.id])
+ sequence = 1
+ nds.each do |n|
+ nd = WayNode.new
+ nd.id = [self.id, sequence]
+ nd.node_id = n
+ nd.save!
+ sequence += 1
+ end
+
+ old_way = OldWay.from_way(self)
+ old_way.timestamp = t
+ old_way.save_with_dependencies!
+
+ # reload the way so that the nodes array points to the correct
+ # new set of nodes.
+ self.reload
+
+ # update and commit the bounding box, now that way nodes
+ # have been updated and we're in a transaction.
+ cs.update_bbox!(bbox) unless nodes.empty?
+
+ # tell the changeset we updated one element only
+ cs.add_changes! 1
+
+ cs.save!
+ end