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
.
- #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 19 |
# 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 versions_collection.indexes.create( { _orig_id: 1, _version: 1 }, { unique: true } ) before_create :set_initial_version after_initialize :revert_id end end |
Instance Method Details
#latest_version ⇒ Object
65 66 67 |
# File 'lib/mongoid_versioning/versioned.rb', line 65 def latest_version self.class.where(_id: id).first end |
#previous_versions ⇒ Object
69 70 71 72 73 74 |
# File 'lib/mongoid_versioning/versioned.rb', line 69 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
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/mongoid_versioning/versioned.rb', line 35 def revise ={} return save if new_record? return false if performing_validations?() && invalid?(:update) process_flagged_destroys result = run_callbacks(:revise) do run_callbacks(:save) do run_callbacks(:update) do _revise true end end end post_process_persist(result, ) and self end |
#revise!(options = {}) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/mongoid_versioning/versioned.rb', line 51 def revise! ={} unless revise() fail_due_to_validation! unless errors.empty? fail_due_to_callback!(:revise!) end true end |
#version(v) ⇒ Object
76 77 78 79 |
# File 'lib/mongoid_versioning/versioned.rb', line 76 def version v return latest_version if v == _version previous_versions.where(_version: v).first end |
#versions ⇒ Object
61 62 63 |
# File 'lib/mongoid_versioning/versioned.rb', line 61 def versions [latest_version].concat(previous_versions) end |