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 20 21 |
# 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_one( { _orig_id: 1, _version: 1 }, { unique: true } ) class_attribute :version_max before_create :set_initial_version after_initialize :revert_id end end |
Instance Method Details
#latest_version ⇒ Object
71 72 73 |
# File 'lib/mongoid_versioning/versioned.rb', line 71 def latest_version self.class.where(_id: id).first end |
#previous_versions ⇒ Object
75 76 77 78 79 80 |
# File 'lib/mongoid_versioning/versioned.rb', line 75 def previous_versions self.class.with(collection: self.class.versions_collection_name). where(_orig_id: id). ne(_version: latest_version._version). desc(:_version) end |
#revise(options = {}) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/mongoid_versioning/versioned.rb', line 41 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
57 58 59 60 61 62 63 |
# File 'lib/mongoid_versioning/versioned.rb', line 57 def revise! ={} unless revise() fail_due_to_validation! unless errors.empty? fail_due_to_callback!(:revise!) end true end |
#version(v) ⇒ Object
82 83 84 85 |
# File 'lib/mongoid_versioning/versioned.rb', line 82 def version v return latest_version if v == _version previous_versions.where(_version: v).first end |
#versions ⇒ Object
67 68 69 |
# File 'lib/mongoid_versioning/versioned.rb', line 67 def versions [latest_version].concat(previous_versions) end |