Module: Mongoid::AutoIncrement

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid/auto_increment.rb,
lib/mongoid/auto_increment/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"2.6.1"

Instance Method Summary collapse

Instance Method Details

#auto_increment!Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/mongoid/auto_increment.rb', line 46

def auto_increment!
  client = self.class.mongo_client
  self.class.auto_increment_classes.each do |klass|
    klass.auto_incremented_fields.each do |name|
      unless self[name]
        result = client.command({
          findAndModify: self.class.auto_increment_collection,
          query: {_id: "#{klass.auto_increment_class_prefix}_#{name}"},
          update: {"$inc" => {klass.auto_increment_value_field => 1}},
          upsert: true,
          new: true,
        })
        self[name] = result.first["value"][klass.auto_increment_value_field]
      end
    end
  end
end

#dupObject



64
65
66
67
68
69
70
71
72
# File 'lib/mongoid/auto_increment.rb', line 64

def dup
  copy = super
  self.class.auto_increment_classes.each do |klass|
    klass.auto_incremented_fields.each do |name|
      copy[name] = nil
    end
  end
  copy
end