Módulo: Mongoid::Persistable

Ampliado por:
ActiveSupport::Preocupación
Incluye:
Creable, Eliminable, Destruible, Incrementable, Lógico, Maximizable, Minable, Multiplicable, Expansible, Extraíble, Insertable, Renombrable, Guardable, Configurable, No configurable, Actualizable, Upsertable, Posicional
Incluido en:
Componible
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 el comportamiento general para operaciones de persistencia.

Definido en el espacio de nombres

Modules: Creable, Eliminable, Destruible, Incrementable, Lógico, Maximizable, Minable, Multiplicable, Expansible, Extraíble, Insertable, Renombrable, Guardable, Configurable, No configurable, Actualizable, Upsertable

Colapso delresumen constante

LISTA_OPERACIONES =

Las operaciones atómicas que tratan con matrices o conjuntos en la base de datos.

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

Colapso del resumen del método de instancia

Métodos incluidos en Unsettable

#desactivado

Métodos incluidos en Upsertable

#upsert

Métodos incluidos en Actualizable

#update, #update!, #update_attribute

Métodos incluidos en Settable

#set

Métodos incluidos en Savable

#save, #save!

Métodos incluidos en Renamable

#rebautizar

Métodos incluidos en Pushable

#añadir_al_conjunto, #empujar

Métodos incluidos en Pullable

#pull, #pull_all

Métodos incluidos de Posicional

#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 de Logical

#poco

Métodos incluidos de Incrementable

#Cª

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) ⇒ verdadero | falso

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

Se puede especificar la opción join_context, que, al ser verdadera, fusionará las operaciones declaradas por el bloque dado con el bloque que envuelve atómicamente la invocación actual para el mismo documento, si existe. Si este bloque o cualquier otro bloque que comparta el mismo contexto se activa antes de persistir, todas las operaciones de ese contexto no se persistirán y se restablecerán en memoria.

Cuando join_context es falso, el bloque de operaciones dado se conservará independientemente de otros contextos. Los fallos en otros contextos no lo afectarán, siempre que este bloque haya podido ejecutarse y conservar los cambios.

El valor predeterminado de join_context se establece mediante la opción de configuración global join_contexts, cuyo valor predeterminado es falso.

Ejemplos:

Ejecutar las operaciones atómicamente.

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:

  • contexto_de_unión (true | false) (predeterminado: nulo)

    Únase al contexto (es decir, fusione las operaciones atómicas declaradas) del bloque atómico que envuelve este para el mismo documento, si existe uno.

Devuelve:

  • (verdadero | falso)

    Si la operación tuvo éxito.



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)
  contexto_de_unión = Mongoid.contextos_de_unión Si contexto_de_unión.nil?
  profundidad de llamada = @atomic_depth ||= 0
  tiene_su_contexto = profundidad de llamada.zero? || !contexto_de_unión
  @atomic_updates_to_execute_stack ||= []
  _mongoid_push_atomic_context Si tiene_su_contexto

  Si ¿bloque_dado?
    @atomic_depth += 1
    rendimiento(yo)
    @atomic_depth -= 1
  end

  Si tiene_su_contexto
    operaciones atómicas persistentes @atomic_context
    _mongoid_eliminar_cambios_de_contexto_atómico
  end

  true
rescate Error estándar => e
  ¡_mongoid_reset_cambios_de_contexto_atómico! Si tiene_su_contexto
  propagar e
asegurar
  _mongoid_pop_contexto_atómico Si tiene_su_contexto

  Si profundidad de llamada.zero?
    @atomic_depth = nulo
    @atomic_updates_to_execute_stack = nulo
  end
end

#¡Fallo debido a la devolución de llamada!(método) ⇒ Objeto

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.

Aumentos:



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

def ¡Fallo debido a la devolución de llamada!(Método)
  propagar Errors::Callback.Nuevo(yo.clase, Método)
end

#¡Fallo debido a la validación!Objeto

Genera un error si falla la validación.

Ejemplos:

Generar el error de validación.

Person.fail_due_to_validation!(person)

Aumentos:



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

def ¡Fallo debido a la validación!
  propagar Errors::Validaciones.Nuevo(yo)
end