Sha256: c373a6d0711dc9c00ad1a7eb18e085a7257cb473f0710e4ff990e328fb14c1f0
Contents?: true
Size: 1.52 KB
Versions: 59
Compression:
Stored size: 1.52 KB
Contents
# encoding: utf-8 module Mongoid module Persistable # Defines behaviour for $pull and $pullAll operations. # # @since 4.0.0 module Pullable extend ActiveSupport::Concern # 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 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 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 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 end end end
Version data entries
59 entries across 55 versions & 3 rubygems