Module: MongoidVersioning::Versioned
- Defined in:
- lib/mongoid_versioning/versioned.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #latest_version ⇒ Object
- #previous_versions ⇒ Object
-
#revise(options = {}) ⇒ Object
.
- #version(v) ⇒ Object
-
#versions ⇒ Object
———————————————————————.
Class Method Details
.included(base) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/mongoid_versioning/versioned.rb', line 4 def self.included base base.extend ClassMethods base.class_eval do define_model_callbacks :revise, only: [:before, :after] field :_version, type: Integer field :_based_on_version, type: Integer collection.database[versions_collection_name].indexes.create( { _orig_id: 1, _version: 1 }, { unique: true } ) after_initialize :revert_id end end |
Instance Method Details
#latest_version ⇒ Object
44 45 46 |
# File 'lib/mongoid_versioning/versioned.rb', line 44 def latest_version self.class.where(_id: id).first end |
#previous_versions ⇒ Object
48 49 50 51 52 53 |
# File 'lib/mongoid_versioning/versioned.rb', line 48 def previous_versions self.class.with(collection: self.class.versions_collection_name). where(_orig_id: id). lt(_version: _version). desc(:_version) end |
#revise(options = {}) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/mongoid_versioning/versioned.rb', line 30 def revise ={} if new_record? !_create_revised().new_record? else _update_revised() end end |
#version(v) ⇒ Object
55 56 57 58 |
# File 'lib/mongoid_versioning/versioned.rb', line 55 def version v return latest_version if v == _version previous_versions.where(_version: v).first end |
#versions ⇒ Object
40 41 42 |
# File 'lib/mongoid_versioning/versioned.rb', line 40 def versions [latest_version].concat(previous_versions) end |