Módulo: Mongoid::Persistable::Pushable
- Ampliado por:
- ActiveSupport::Concern
- Incluido en:
- Mongoid::Persistable
- Definido en:
- lib/mongoid/persistable/pushable.rb
Overview
Define el comportamiento de las operaciones $push y $addToSet.
Resumen del método de instancia colapsar
-
#add_to_set(adds) ⟶ Documento
Añada los valores únicos a los arreglos sólo si el valor no existe ya en el arreglo.
-
#push(pushes) ⇒ Documento
Agrega un solo valor o varios valores a los arreglos.
Detalles del método de instancia
#add_to_set(adds) ⇒ Documento
Añada los valores únicos a los arreglos sólo si el valor no existe ya en el arreglo.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# Archivo 'lib/mongoid/persistable/pushable.rb', línea 18 def Añadir a conjunto(agrega) preparar_operación_atómica hacer |ops| proceso_operaciones_atómicas(agrega) hacer |Campo, Valor| existente = enviar(Campo) || atributos[Campo] si existente.nil? atributos[Campo] = [] # Lee el valor de los atributos: # https://jira.mongodb.org/browse/MONGOID-4874 existente = atributos[Campo] end values = [ Valor ].nivelar(1) values.cada hacer |val| existente.push(val) a menos que existente.incluir?(val) end ops[atomic_attribute_name(Campo)] = { '$each' => values } end { '$addToSet' => ops } end end |
#empujar(empujes) ⇒ Documento
Agrega un solo valor o varios valores a los arreglos.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# Archivo 'lib/mongoid/persistable/pushable.rb', línea 49 def push(empuja) preparar_operación_atómica hacer |ops| proceso_operaciones_atómicas(empuja) hacer |Campo, Valor| existente = enviar(Campo) || begin atributos[Campo] ||= [] atributos[Campo] end values = [ Valor ].nivelar(1) values.cada { |val| existente.push(val) } ops[atomic_attribute_name(Campo)] = { '$each' => values } end { '$push' => ops } end end |