module Mongoid::Persistable::Pullable
Defines behavior for $pull and $pullAll operations.
@since 4.0.0
Public Instance Methods
pull(pulls)
click to toggle source
Pull single values from the provided arrays.
@example Pull a value from the array.
document.pull(names: "Jeff", levels: 5)
@note If duplicate values are found they will all be pulled.
@param [ Hash ] pulls The field/value pull pairs.
@return [ Document
] The document.
@since 4.0.0
# File lib/mongoid/persistable/pullable.rb, line 25 def pull(pulls) prepare_atomic_operation do |ops| process_atomic_operations(pulls) do |field, value| (send(field) || []).delete(value) ops[atomic_attribute_name(field)] = value end { "$pull" => ops } end end
pull_all(pulls)
click to toggle source
Pull multiple values from the provided array fields.
@example Pull values from the arrays.
document.pull_all(names: [ "Jeff", "Bob" ], levels: [ 5, 6 ])
@param [ Hash ] pulls The pull all operations.
@return [ Document
] The document.
@since 4.0.0
# File lib/mongoid/persistable/pullable.rb, line 45 def pull_all(pulls) prepare_atomic_operation do |ops| process_atomic_operations(pulls) do |field, value| existing = send(field) || [] value.each{ |val| existing.delete(val) } ops[atomic_attribute_name(field)] = value end { "$pullAll" => ops } end end