Class: Mongoid::List::Embedded

Inherits:
Abstract
  • Object
show all
Defined in:
lib/mongoid/list/embedded.rb

Instance Attribute Summary

Attributes inherited from Abstract

#obj

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Abstract

#changes, #conditions, #initialize

Constructor Details

This class inherits a constructor from Mongoid::List::Abstract

Class Method Details

.update_positions!(binding, elements) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/mongoid/list/embedded.rb', line 9

def update_positions!(binding, elements)
  load_list_elements(binding, elements).each_with_index do |element, idx|
    binding.base.collection.update(
      { "#{binding..key}._id" => element.id },
      { "$set" => { "#{binding..key}.$.position" => (idx+1) } }
    )
  end
end

Instance Method Details

#countObject



39
40
41
# File 'lib/mongoid/list/embedded.rb', line 39

def count
  items.excludes(_id: obj.id).where(conditions).count
end

#update_positions!Object



30
31
32
33
34
35
36
37
# File 'lib/mongoid/list/embedded.rb', line 30

def update_positions!
  items.each do |item|
    next unless should_operate_on_item?(item)
    criteria  = { "#{relation_name}._id" => item.id }
    updates   = { '$inc' => { "#{relation_name}.$.position" => changes[:by] } }
    container.class.collection.update(criteria, updates)
  end
end