Módulo: Mongoide::Criterios::Scopable
- Incluido en:
- Mongoid::Criterios
- Definido en:
- lib/mongoid/criteria/scopable.rb
Overview
Módulo mixin incluido en Mongoid::Criteria que añade funcionalidad relacionada con ámbitos de query por defecto y ámbitos nombrados.
Colapso del resumen del método de instancia
-
#apply_default_scope ⇒ Criteria
Aplica el alcance predeterminado a los criterios.
-
#apply_scope(alcance) ⇒ Criterios
privada
Aplica un alcance a los criterios actuales.
-
#remove_scoping(otro) ⇒ Criterios
Dado otro criterio, elimine el alcance de los otros criterios de este criterio.
-
# alcance (opciones = nulo) ⇒Criterios
Fuerza que los criterios tengan alcance, a menos que estén dentro de un bloque sin alcance.
-
#¿alcance? ⇒ verdadero | falso
¿Se ha aplicado a los criterios el alcance predeterminado?
-
#opciones_de_alcance ⇒ Matriz
Obtenga las opciones de alcance de criterios, como un par (con alcance, sin alcance).
-
#scoping_options=(opciones) ⇒ Matriz
Establezca las opciones de alcance de los criterios, como un par (con alcance, sin alcance).
-
#sin ámbito ⇒ Criterios
Borra todo el alcance de los criterios.
-
# ¿sinámbito? ⇒ verdadero | falso
¿El criterio no está delimitado?
-
#con_alcance_predeterminado ⇒ Criterios
Obtenga los criterios con el alcance predeterminado aplicado, si se puede aplicar dicho alcance.
Detalles del método de instancia
#apply_default_scope ⇒ Criteria
Aplica el alcance predeterminado a los criterios.
18 19 20 21 22 23 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 18 def aplicar_alcance_predeterminado klass.sin alcance predeterminado hacer ¡unir!(klass.alcance predeterminado.llamada) end yo. = true, false end |
#apply_scope(alcance) ⇒ Criterios
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Aplica un alcance a los criterios actuales.
Este método no modifica el receptor pero puede devolver un nuevo objeto o el receptor dependiendo del argumento: si el argumento scope es nulo, el receptor se devuelve sin modificaciones, de lo contrario se devuelve un nuevo objeto de criterios.
37 38 39 40 41 42 43 44 45 46 47 48 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 37 def aplicar_alcance(ámbito de aplicación) caso ámbito de aplicación Cuando Proc instancia_exec(Yámbito de aplicación) Cuando Símbolo Enviar(ámbito de aplicación) Cuando Criterios unir(ámbito de aplicación) else yo end end |
#remove_scoping(otro) ⇒ Criterios
Dado otro criterio, elimine el alcance de los otros criterios de este criterio.
59 60 61 62 63 64 65 66 67 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 59 def eliminar_alcance(otros) Si otros rechazo_coincidencia(otros, :selector, :opciones) otros.inclusiones.cada hacer || inclusiones.delete_one() end end yo end |
# alcance(opciones = nulo) ⇒ Criterios
Fuerza que los criterios tengan alcance, a menos que estén dentro de un bloque sin alcance.
77 78 79 80 81 82 83 84 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 77 def con alcance( = nulo) crit = clon crit..¡unir!( || {}) Si klass.¿Se puede copiar por defecto? && !¿alcance? crit.aplicar_alcance_predeterminado end crit end |
#¿con alcance? ⇒ verdadero | falso
¿Se ha aplicado a los criterios el alcance predeterminado?
92 93 94 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 92 def ¿alcance? !!(¿definido?(@scoped) ? @scoped : nulo) end |
#opciones_de_alcance ⇒ Matriz
Obtenga las opciones de alcance de criterios, como un par (con alcance, sin alcance).
127 128 129 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 127 def [ (¿definido?(@scoped) ? @scoped : nulo), (¿definido?(@sin ámbito) ? @sin ámbito : nulo) ] end |
#scoping_options=(opciones) ⇒ Matriz
Establezca las opciones de alcance de los criterios, como un par (con alcance, sin alcance).
139 140 141 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 139 def () @scoped, @sin ámbito = end |
#sin ámbito ⇒ Criterios
Borra todo el alcance de los criterios.
102 103 104 105 106 107 108 109 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 102 def sin alcance crit = clon a no ser que ¿sin alcance? crit. = false, true crit.selector.borrar; crit..borrar end crit end |
# ¿sinámbito? ⇒ verdadero | falso
¿El criterio no está delimitado?
117 118 119 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 117 def ¿sin alcance? !!(¿definido?(@sin ámbito) ? @sin ámbito : nulo) end |
#con_alcance_predeterminado ⇒ Criterios
Obtener los criterios con el ámbito por defecto aplicado, si el ámbito por defecto es capaz de aplicarse. Los casos en los que no se puede son: Si estamos en un bloque no delimitado, si el criterio ya está forzado a ser no delimitado o si el ámbito por defecto ya se ha aplicado.
152 153 154 155 156 157 158 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 152 def con alcance predeterminado crit = clon Si klass.¿Se puede copiar por defecto? && !¿sin alcance? && !¿alcance? crit.aplicar_alcance_predeterminado end crit end |