Sha256: 6d886f4c9e74c090c29f91369b57a04ab26a19faaec182dfbfce45101bf7351c
Contents?: true
Size: 1.01 KB
Versions: 27
Compression:
Stored size: 1.01 KB
Contents
# frozen_string_literal: true # encoding: utf-8 module Mongoid module Persistable # Defines behavior for $pop operations. # # @since 4.0.0 module Poppable extend ActiveSupport::Concern # Pop or shift items from arrays using the $pop operator. # # @example Pop items from an array. # document.pop(aliases: 1) # # @example Shift items in the array. # document.pop(aliases: -1) # # @example Multiple pops in one call. # document.pop(names: 1, aliases: 1) # # @param [ Hash ] pops The field/value pop operations. # # @return [ Document ] The document. # # @since 4.0.0 def pop(pops) prepare_atomic_operation do |ops| process_atomic_operations(pops) do |field, value| values = send(field) value > 0 ? values.pop : values.shift ops[atomic_attribute_name(field)] = value end { "$pop" => ops } end end end end end
Version data entries
27 entries across 27 versions & 2 rubygems