Sha256: d806500ff268203444d603c34bc9482522f3cb4b728978f848b2a479ca01a305
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
# encoding: utf-8 module Mongoid #:nodoc: module Persistence #:nodoc: # Update is a persistence command responsible for taking a document that # has already been saved to the database and saving it, depending on # whether or not the document has been modified. # # Before persisting the command will check via dirty attributes if the # document has changed, if not, it will simply return true. If it has it # will go through the validation steps, run callbacks, and set the changed # fields atomically on the document. The underlying query resembles the # following MongoDB query: # # collection.update( # { "_id" : 1, # { "$set" : { "field" : "value" }, # false, # false # ); # # For embedded documents it will use the positional locator: # # collection.update( # { "_id" : 1, "addresses._id" : 2 }, # { "$set" : { "addresses.$.field" : "value" }, # false, # false # ); # class Update < Command # Persist the document that is to be updated to the database. This will # only write changed fields via MongoDB's $set modifier operation. # # Example: # # <tt>Update.persist</tt> # # Returns: # # +true+ or +false+, depending on validation. def persist return false if validate && !@document.valid? @document.run_callbacks(:save) do @document.run_callbacks(:update) do if update @document.move_changes else return false end end end; true end protected # Update the document in the database atomically. def update if @document.changed? @collection.update(@document._selector, { "$set" => @document.setters }, @options.merge(:multi => false)) end; true end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
chhean-mongoid-2.0.1.beta1 | lib/mongoid/persistence/update.rb |
mongoid-2.0.0.beta.5 | lib/mongoid/persistence/update.rb |