Módulo: Mongoid::Criteria::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.
Resumen del método de instancia colapsar
-
#apply_default_scope ⇒ Criteria
Aplica el ámbito por defecto a los criterios.
-
#apply_scope(alcance) ⇒ Criterios
privado
Aplica un alcance al criterio actual.
-
#remove_scoping(other) ⇒ Criteria
Dado otro criterio, remueve el alcance del otro criterio de este criterio.
-
#scoped(options = nil) ⇒ Criterio
Fuerza que los criterios estén limitados, a menos que se encuentren dentro de un bloque sin restricciones.
-
#¿scope? ⇒ true | false
¿Se ha aplicado a los criterios el alcance predeterminado?
-
#scoping_options ⇒ arreglo
Obtener las opciones de alcance de los criterios, como un par (limitado, ilimitado).
-
#scoping_options=(opciones) ⇒ Matriz
Establezca las opciones de alcance de los criterios, como un par (con alcance, sin alcance).
-
#sin ámbito ⇒ Criterios
Limpia todo el alcance de los criterios.
-
#sin alcance? ⇒ verdadero | falso
¿El criterio no está incluido en un ámbito?.
-
#with_default_scope ⇒ Criterios
Obten los criterios con el alcance por defecto aplicado, si el alcance por defecto puede aplicarse.
Detalles del método de instancia
#apply_default_scope ⇒ Criteria
Aplica el ámbito por defecto a los criterios.
18 19 20 21 22 23 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 18 def apply_default_scope klass.sin_ámbito_predeterminado hacer ¡unir!(klass.alcance predeterminado.llamar) end sí mismo. = true, false end |
#apply_scope(scope) ⇒ 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 al criterio actual.
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 apply_scope(Alcance) caso Alcance Cuando Proc instancia_exec(YAlcance) Cuando Símbolo enviar(Alcance) Cuando Criterios fusionar(Alcance) else sí mismo end end |
#remove_scoping(otro) ⇒ Criterios
Dado otro criterio, remueve el alcance del otro criterio 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, :options) Otros.inclusiones.cada hacer || inclusiones.delete_one() end end sí mismo end |
#con alcance(opciones = nulo) ⇒ Criterios
Fuerza que los criterios estén limitados, a menos que se encuentren dentro de un bloque sin restricciones.
77 78 79 80 81 82 83 84 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 77 def delimitado( = nulo) crit = clon crit..¡unir!( || {}) si klass.¿Se puede copiar por defecto? && !¿con alcance? crit.apply_default_scope end crit end |
#¿scoped? ⇒ true | false
¿Se ha aplicado el alcance por defecto a los criterios?
92 93 94 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 92 def ¿con alcance? !!(¿definido?(@scoped) ? @scoped : nulo) end |
#opciones_de_alcance ⇒ Matriz
Obtener las opciones de alcance de los criterios, como un par (limitado, ilimitado).
127 128 129 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 127 def [ (¿definido?(@scoped) ? @scoped : nulo), (¿definido?(@unscoped) ? @unscoped : 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, @unscoped = end |
#sin ámbito ⇒ Criterios
Limpia 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 menos que ¿sin alcance? crit. = false, true crit.selector.borrar; crit..borrar end crit end |
#¿sin ámbito? ⇒ verdadero | falso
¿El criterio no tiene alcance?
117 118 119 |
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 117 def ¿sin alcance? !!(¿definido?(@unscoped) ? @unscoped : 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_ámbito_predeterminado crit = clon si klass.¿Se puede copiar por defecto? && !¿sin alcance? && !¿con alcance? crit.apply_default_scope end crit end |