Sha256: dde67d7c82001a118eae8ca3359608aee459b86671b9c06a53632b005db51d06
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module CouchPotato module Versioning def self.included(base) base.class_eval do property :version property :master_version_id cattr_accessor :new_version_condition before_create :set_version_default before_update :prepare_for_new_version def self.set_version_condition(lambda) self.new_version_condition = lambda end end end def versions(version_no = nil) if version_no CouchPotato::Persistence::Finder.new.find(self.class, :version => version_no).first elsif version == 1 [self] else CouchPotato::Persistence::Finder.new.find(self.class, :master_version_id => _id).sort_by(&:version) end end private def set_version_default self.version ||= 1 end def prepare_for_new_version if new_version_condition.nil? || new_version_condition.call(self) copy = self.class.get self._id copy._id = nil copy._rev = nil copy.master_version_id = self._id copy.save self.master_version_id ||= self.id self.version += 1 end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
langalex-couch_potato-0.1 | lib/couch_potato/versioning.rb |