lib/mongoid_revisions.rb in mongoid_revisions-0.0.2 vs lib/mongoid_revisions.rb in mongoid_revisions-0.0.3
- old
+ new
@@ -31,27 +31,37 @@
self.save
end
# CREATE A NEW REVISION FOR THE DOCUMENT
def revise
- new_revision = self.class.create self.attributes.except("_id")
- new_revision._token = self.token
- new_revision._revision = (self.revision || 1) + 1
- new_revision.tag = "#{new_revision.revision}.0.0"
- new_revision.save
- self.relations.each do |relation|
+ self._revise_or_branch((self.revision || 1) + 1,self.token)
+ end
+
+ # CREATE A NEW BRANCH
+ def branch
+ self._revise_or_branch(0)
+ end
+
+ protected
+
+ def _revise_or_branch(revision,token=nil)
+ new = self.class.create self.attributes.except("_id")
+ new._token = token
+ new._revision = revision
+ new.tag = "#{new.revision}.0.0"
+ new.save
+ self.relations.each do |relation|
metadata = self.class.reflect_on_association(relation[0])
metadata.class_name.constantize.where(metadata.foreign_key.to_sym=>self.id).each do |child|
new_child = metadata.class_name.constantize.create child.attributes.except("_id")
new_child.revision = child.revision+1
new_child.tag = "#{new_child.revision}.0.0"
- new_child[metadata.foreign_key.to_sym]=new_revision.id
+ new_child[metadata.foreign_key.to_sym]=new.id
new_child.save
end
end
- end
-
- protected
+ new
+ end
def _revision=(rev)
self[:revision]=rev
end