module RocketJob::Plugins::Document

Base class for storing models in MongoDB

Private Instance Methods

find_and_update(attrs) click to toggle source

Apply changes to this document returning the updated document from the database. Allows other changes to be made on the server that will be loaded.

# File lib/rocket_job/plugins/document.rb, line 32
def find_and_update(attrs)
  doc = collection.find(_id: id).find_one_and_update({"$set" => attrs}, return_document: :after)
  raise(::Mongoid::Errors::DocumentNotFound.new(self.class, id)) unless doc

  # Clear out keys that are not returned during the reload from MongoDB
  (fields.keys + embedded_relations.keys - doc.keys).each { |key| send("#{key}=", nil) }
  @attributes = doc
  apply_defaults
  self
end