]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/relation.rb
Merge rails_port as of r4613 & fix tests.
[rails.git] / app / models / relation.rb
index f74a149ec0b28c0de7b518afb6c572903a13bc00..a5d463ffb3c8302de864b7ca3e872aa40c308498 100644 (file)
@@ -141,46 +141,40 @@ class Relation < ActiveRecord::Base
     @tags[k] = v
   end
 
-  def save_with_history
-    begin
-      Relation.transaction do
-        t = Time.now
-        self.timestamp = t
-        self.save!
-
-        tags = self.tags
-
-        RelationTag.delete_all(['id = ?', self.id])
-
-        tags.each do |k,v|
-          tag = RelationTag.new
-          tag.k = k
-          tag.v = v
-          tag.id = self.id
-          tag.save!
-        end
-
-        members = self.members
+  def save_with_history!
+    Relation.transaction do
+      t = Time.now
+      self.timestamp = t
+      self.save!
+
+      tags = self.tags
+
+      RelationTag.delete_all(['id = ?', self.id])
+
+      tags.each do |k,v|
+       tag = RelationTag.new
+       tag.k = k
+       tag.v = v
+       tag.id = self.id
+       tag.save!
+      end
 
-        RelationMember.delete_all(['id = ?', self.id])
+      members = self.members
 
-        members.each do |n|
-          mem = RelationMember.new
-          mem.id = self.id
-          mem.member_type = n[0];
-          mem.member_id = n[1];
-          mem.member_role = n[2];
-          mem.save!
-        end
+      RelationMember.delete_all(['id = ?', self.id])
 
-        old_relation = OldRelation.from_relation(self)
-        old_relation.timestamp = t
-        old_relation.save_with_dependencies!
+      members.each do |n|
+       mem = RelationMember.new
+       mem.id = self.id
+       mem.member_type = n[0];
+       mem.member_id = n[1];
+       mem.member_role = n[2];
+       mem.save!
       end
 
-      return true
-    rescue Exception => ex
-      return nil
+      old_relation = OldRelation.from_relation(self)
+      old_relation.timestamp = t
+      old_relation.save_with_dependencies!
     end
   end