Module: MongoMapper::Plugins::Versioned

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongo_mapper/plugins/version.rb,
lib/mongo_mapper/plugins/versioned.rb,
lib/mongo_mapper/plugins/models/version.rb

Defined Under Namespace

Modules: ClassMethods Classes: Version

Instance Method Summary collapse

Instance Method Details

#create_versionObject



38
39
40
41
# File 'lib/mongo_mapper/plugins/versioned.rb', line 38

def create_version
  self.version_number = self.versions.empty? ? 1 : self.versions.last.version_number+1
  self.versions << current_version
end

#current_versionObject



68
69
70
# File 'lib/mongo_mapper/plugins/versioned.rb', line 68

def current_version
  Version.new(:data => self.attributes.slice!(*ignored_keys), :versioned_id => self.id, :version_number => self.version_number)
end

#last_version?Boolean

Returns:

  • (Boolean)


63
64
65
66
# File 'lib/mongo_mapper/plugins/versioned.rb', line 63

def last_version?
  return true if versions.empty?
  self.version_number == versions.last.version_number
end

#revert_to(target_version_number) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/mongo_mapper/plugins/versioned.rb', line 49

def revert_to(target_version_number)
  return if self.version_number == target_version_number
  if target_version = version_at(target_version_number)
    self.attributes = target_version.data
    self.version_number = target_version.version_number
  end
end

#should_create_initial_version?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/mongo_mapper/plugins/versioned.rb', line 82

def should_create_initial_version?
  versions.empty?
end

#should_create_version?Boolean

this method might be overwritten by something more sophisticated (esp. in case of EmbeddedDocuments)

Returns:

  • (Boolean)


88
89
90
# File 'lib/mongo_mapper/plugins/versioned.rb', line 88

def should_create_version?
  changes.slice!(*ignored_keys).size > 0
end

#version_at(target_version_number) ⇒ Object



72
73
74
# File 'lib/mongo_mapper/plugins/versioned.rb', line 72

def version_at(target_version_number)
  versions.where(:version_number => target_version_number).first
end