Sha256: fefbb7b53d8dced59bf5719d15729345a614f7505aeaf8491358064ae32dac37
Contents?: true
Size: 1.33 KB
Versions: 3
Compression:
Stored size: 1.33 KB
Contents
require 'active_support/concern' module RocketJob module Plugins # Base class for storing models in MongoDB module Document extend ActiveSupport::Concern include Mongoid::Document included do store_in client: 'rocketjob' end module ClassMethods # V2 Backward compatibility # DEPRECATED def key(name, type, options = {}) field(name, options.merge(type: type)) end # Mongoid does not apply ordering, add sort def first all.sort('_id' => 1).first end # Mongoid does not apply ordering, add sort def last all.sort('_id' => -1).first end end private # 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. 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 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rocketjob-3.5.2 | lib/rocket_job/plugins/document.rb |
rocketjob-3.5.1 | lib/rocket_job/plugins/document.rb |
rocketjob-3.5.0 | lib/rocket_job/plugins/document.rb |