Module: MongoidVersionedAtomic::VAtomic::ClassMethods
- Defined in:
- lib/mongoid_versioned_atomic/v_atomic.rb
Instance Method Summary collapse
-
#after_persist(doc, instance) ⇒ Object
return [Boolean] : always returns true.
-
#before_persist(options, update, bypass_versioning = false) ⇒ Array
: returns the options, and update.
-
#bson_to_mongoid(bson_doc, klass) ⇒ Object
converts a bson_doc to the target klass instance.
-
#log_opts(query, update, options, create_or_update, log) ⇒ Object
logs.
-
#versioned_upsert_one(query = {}, update = {}, klass = nil, upsert = true, log = false, bypass_versioning = false) ⇒ Object
Mongoid document instance or nil(if the update hash was empty).
Instance Method Details
#after_persist(doc, instance) ⇒ Object
return [Boolean] : always returns true.
127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/mongoid_versioned_atomic/v_atomic.rb', line 127 def after_persist(doc,instance) doc.keys.each do |f| if f == "version" instance.send("#{f}=",doc[f]) else if instance.send("#{f}") != doc[f] instance.send("#{f}=",doc[f]) end end end return true end |
#before_persist(options, update, bypass_versioning = false) ⇒ Array
Returns : returns the options, and update.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/mongoid_versioned_atomic/v_atomic.rb', line 101 def before_persist(,update,bypass_versioning=false) [:return_document] = :after if !bypass_versioning if update["$inc"].nil? update["$inc"] = { "version" => 1 } else update["$inc"]["version"] = 1 end end return ,update end |
#bson_to_mongoid(bson_doc, klass) ⇒ Object
converts a bson_doc to the target klass instance. return [Object] : either the document in the target class or nil.
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/mongoid_versioned_atomic/v_atomic.rb', line 41 def bson_to_mongoid(bson_doc,klass) if !bson_doc.nil? t = Mongoid::Factory.from_db(klass,bson_doc) return t else return nil end end |
#log_opts(query, update, options, create_or_update, log) ⇒ Object
logs
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/mongoid_versioned_atomic/v_atomic.rb', line 141 def log_opts(query,update,,create_or_update,log) if log puts "doing-------------------- #{create_or_update}" puts "the query is :" puts JSON.pretty_generate(query) puts "the update is" puts JSON.pretty_generate(update) puts "the options are" puts JSON.pretty_generate() end end |
#versioned_upsert_one(query = {}, update = {}, klass = nil, upsert = true, log = false, bypass_versioning = false) ⇒ Object
Returns mongoid document instance or nil(if the update hash was empty). You need to check the document to see whether it has the changes you requested.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/mongoid_versioned_atomic/v_atomic.rb', line 75 def versioned_upsert_one(query={},update={},klass=nil,upsert=true,log=false,bypass_versioning=false) = {} if query.empty? bypass_versioning = true end ,update = before_persist(,update,bypass_versioning) [:upsert] = upsert if !update.empty? return bson_to_mongoid(collection.find_one_and_update(query,update,),klass) end return nil end |