Módulo: Mongoid::Persistable

Ampliado por:
ActiveSupport::Concern
Incluye:
Creable, Eliminable, Destruible, Incrementable, Lógico, Maximizable, Minimizables, Multiplicable, Extraible, Recuperable, Empujable, Renombrable, Guardable, Configurable, No configurable, Actualizable, Sustituible, Posicional
Incluido en:
Compuesto
Definido en:
lib/mongoid/persistable.rb,
lib/mongoid/persistable/logical.rb,
lib/mongoid/persistable/maxable.rb,
lib/mongoid/persistable/minable.rb,
lib/mongoid/persistable/savable.rb,
lib/mongoid/persistable/poppable.rb,
lib/mongoid/persistable/pullable.rb,
lib/mongoid/persistable/pushable.rb,
lib/mongoid/persistable/settable.rb,
lib/mongoid/persistable/creatable.rb,
lib/mongoid/persistable/deletable.rb,
lib/mongoid/persistable/renamable.rb,
lib/mongoid/persistable/updatable.rb,
lib/mongoid/persistable/unsettable.rb,
lib/mongoid/persistable/upsertable.rb,
lib/mongoid/persistable/destroyable.rb,
lib/mongoid/persistable/multipliable.rb,
lib/mongoid/persistable/incrementable.rb

Overview

Contiene un comportamiento general para las operaciones de persistencia.

Definido bajo Namespace

Modules: Creable, Eliminable, Destruible, Incrementable, Lógico, Maximizable, Minimizadle, Multiplicable, Extraíble, Retráctil, Presionable, Renombrable, Guardable, Configurable, No configurable, Actualizable, Fusionable

Colapso delresumen constante

LIST_OPERATIONS =

Las operaciones atómicas que procesan arreglos o conjuntos en la base de datos.

[ "$addToSet", "$push", "$pull", "$pullAll" ].freeze

Resumen del método de instancia colapsar

Métodos incluidos en Unsettable

#deshacer

Métodos incluidos de Upsertable

#upsert

Métodos incluidos de Actualizable

#update, #update!, #update_attribute

Métodos incluidos de Settable

#set

Métodos incluidos en Savable

#save, #save!

Métodos incluidos de Renamable

#rename

Métodos incluidos de Empujable

#añadir_al_conjunto, #empujar

Métodos incluidos en Pullable

#pull, #pull_all

Métodos incluidos desde Positional

#posicionalmente

Métodos incluidos en Poppable

#pop

Métodos incluidos de Multipliable

#mul

Métodos incluidos de Minable

#set_min

Métodos incluidos de Maxable

#set_max

Métodos incluidos desde Logical

#bit

Métodos incluidos de Incrementable

#inc

Métodos incluidos de Destruible

#destruir, #destruir!

Métodos incluidos de suprimible

borrar

Métodos incluidos en Creatable

#insert

Detalles del método de instancia

#atómicamente(join_context: nil) ⇒ true | false

Ejecute las operaciones de forma atómica (en una sola llamada de base de datos) para todo lo que suceda dentro del bloque. Este método permite anidar más llamadas a atómicamente, que se comportarán según las opciones descritas a continuación.

Se puede dar una opción join_context que, cuando sea verdadera, fusionará las operaciones declaradas por el bloque dado con el bloque atómico que envuelve la invocación actual para el mismo documento, si existe uno. Si este bloque o cualquier otro bloque que comparta el mismo contexto se ejecuta antes de persistir, entonces todas las operaciones de ese contexto no se guardarán y también se restablecerán en la memoria.

Cuando join_context es falso, el bloque de operaciones dado se conservará de forma independiente a otros contextos. Las fallas en otros contextos no afectarán este, siempre y cuando este bloque pueda ejecutarse y conservar los cambios.

El valor por defecto de join_context se establece mediante la opción de configuración global join_contexts, cuyo valor por defecto es false.

Ejemplos:

Ejecute las operaciones de manera atómica.

document.atomically do
  document.set(name: "Tool").inc(likes: 10)
end

Ejecutar algunas operaciones internas de forma atómica, pero independientemente de las operaciones externas.


document.atomically do
  document.inc likes: 10
  document.atomically join_context: false do
    # The following is persisted to the database independently.
    document.unset :origin
  end
  document.atomically join_context: true do
    # The following is persisted along with the other outer operations.
    document.inc member_count: 3
  end
  document.set name: "Tool"
end

Parámetros:

  • join_context (true | false) (predeterminado: nulo)

    Únete al contexto (es decir, fusionar operaciones atómicas declaradas) del bloque atómico que envuelve a este para el mismo documento, si existe alguno.

Devuelve:

  • (true | false)

    Si la operación fue exitosa.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Archivo 'lib/mongoid/persistable.rb', línea 94

def atómicamente(contexto_de_unión: nulo)
  join_context = Mongoid.join_contexts si join_context.nil?
  call_depth = @atomic_depth ||= 0
  tiene_su_contexto = call_depth.zero? || !join_context
  @atomic_updates_to_execute_stack ||= []
  _mongoid_push_atomic_context si tiene_su_contexto

  si ¿block_given?
    @atomic_depth += 1
    rendimiento(sí mismo)
    @atomic_depth -= 1
  end

  si tiene_su_contexto
    persist_atomic_operations @atomic_context
    remover
  end

  true
rescate StandardError => e
  ¡_mongoid_reset_cambios_de_contexto_atómico! si tiene_su_contexto
  propagar e
asegurar
  _mongoid_pop_atomic_context si tiene_su_contexto

  si call_depth.zero?
    @atomic_depth = nulo
    @atomic_updates_to_execute_stack = nulo
  end
end

#fail_due_to_callback!(method) ⇒ Object

Genera un error si falla una devolución de llamada.

Ejemplos:

Genera el error de función de retorno.

Person.fail_due_to_callback!(person, :create!)

Parámetros:

  • Método (Símbolo)

    El método que se está llamando.

Aumenta:



143
144
145
# Archivo 'lib/mongoid/persistable.rb', línea 143

def ¡fallar_debido_a_callback!(Método)
  propagar Errors::Callback.Nuevo(sí mismo.clase, Método)
end

#fallar_debido_a_validacion!Objeto

Esta función genera un error si la validación falla.

Ejemplos:

Generar un error de validación.

Person.fail_due_to_validation!(person)

Aumenta:



131
132
133
# Archivo 'lib/mongoid/persistable.rb', línea 131

def falló_por_validación!
  propagar Errors::validación.Nuevo(sí mismo)
end