Módulo: Mongoid::Criteria::Scopable

Incluido en:
Mongoid::Criteria
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

Detalles del método de instancia

#apply_default_scopeCriteria

Aplica el ámbito por defecto a los criterios.

Ejemplos:

Aplicar el alcance por defecto.

criteria.apply_default_scope

Devuelve:



15
16
17
18
19
20
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 15

def apply_default_scope
  klass.sin_ámbito_predeterminado hacer
    ¡Actualizar!(klass.scoping por defecto.llamar)
  end
  sí mismo.scoping_options = true, false
end

#apply_scope(scope) ⇒ Criterios

Este método es parte de una API privada. Se debe evitar el uso de este método 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 nil, el receptor se devuelve sin modificación, de lo contrario se devuelve un nuevo objeto de criterios.

Parámetros:

  • Alcance (Proc | Symbol | Criteria | nil)

    El alcance para aplicar.

Devuelve:

  • (Criterios)

    Los criterios con el ámbito aplicado.



34
35
36
37
38
39
40
41
42
43
44
45
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 34

def apply_scope(Alcance)
  caso Alcance
  cuando Proc
    instancia_exec(&Alcance)
  cuando Símbolo
    enviar(Alcance)
  cuando Criterios
    fusionar(Alcance)
  else
    sí mismo
  end
end

#remove_scoping(otro) ⇒ Criterios

Dado otro criterio, remover el alcance del otro criterio de este criterio.

Ejemplos:

Remueva el alcance.

criteria.remove_scoping(other)

Parámetros:

  • Otros (Criterios)

    Los demás criterios.

Devuelve:

  • (Criterios)

    Los criterios con el alcance eliminado.



56
57
58
59
60
61
62
63
64
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 56

def remove_scoping(Otros)
  si Otros
    Rechazar_coincidencia(Otros, Selector:, :options)
    Otros.inclusiones.cada hacer |meta|
      inclusiones.delete_one(meta)
    end
  end
  sí mismo
end

#con alcance(opciones = nulo) ⇒ Criterios

Obliga a que los criterios estén acotados, a menos que se encuentren dentro de un bloque sin restricciones.

Ejemplos:

Forzar que los criterios estén definidos en el ámbito.

criteria.scoped(skip: 10)

Parámetros:

  • opciones (encriptada) (valor por defecto: nil)

    Opciones de query adicionales.

Devuelve:



74
75
76
77
78
79
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 74

def delimitado(opciones = nulo)
  crit = clonar
  crit.opciones.¡Actualizar!(opciones || {})
  crit.apply_default_scope si klass.¿por defecto_limitable? && !¿con alcance?
  crit
end

#¿scoped?true | false

¿Se ha aplicado el alcance por defecto a los criterios?

Ejemplos:

¿Se ha aplicado el alcance por defecto?

criteria.scoped?

Devuelve:

  • (true | false)

    Si se aplica el alcance por defecto.



87
88
89
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 87

def ¿con alcance?
  !!(¿definido?(@scoped) ? @scoped : nulo)
end

#scoping_optionsarreglo

Obtener las opciones de alcance de los criterios, como un par (limitado, ilimitado).

Ejemplos:

Obtenga las opciones de alcance.

criteria.scoping_options

Devuelve:

  • (arreglo)

    Con alcance, sin alcance.



123
124
125
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 123

def scoping_options
  [ (¿definido?(@scoped) ? @scoped : nulo), (¿definido?(@unscoped) ? @unscoped : nulo) ]
end

#scoping_options=(options) ⇒ Array

Establece las opciones de alcance de los criterios, como un par (con alcance, sin alcance).

Ejemplos:

Establezca las opciones de ámbito.

criteria.scoping_options = true, false

Parámetros:

  • opciones (arreglo)

    Con alcance, sin alcance.

Devuelve:

  • (arreglo)

    Las nuevas opciones de alcance.



135
136
137
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 135

def scoping_options=(opciones)
  @scoped, @unscoped = opciones
end

#sin ámbitoCriterios

Limpia todo el alcance de los criterios.

Ejemplos:

Elimine todo el alcance de los criterios.

criteria.unscoped

Devuelve:



97
98
99
100
101
102
103
104
105
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 97

def sin ámbito
  crit = clonar
  a menos que ¿sin alcance?
    crit.scoping_options = false, true
    crit.selector.borrar
    crit.opciones.borrar
  end
  crit
end

#¿sin ámbito?verdadero | falso

¿El criterio no tiene alcance?

Ejemplos:

¿El criterio no tiene alcance?

criteria.unscoped?

Devuelve:

  • (true | false)

    Si los criterios son fuerza sin alcance.



113
114
115
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 113

def ¿sin alcance?
  !!(¿definido?(@unscoped) ? @unscoped : nulo)
end

#with_default_scopeCriterios

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.

Ejemplos:

Obtenga los criterios con el scope por defecto.

criteria.with_default_scope

Devuelve:



148
149
150
151
152
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 148

def con_ámbito_predeterminado
  crit = clonar
  crit.apply_default_scope si klass.¿por defecto_limitable? && !¿sin alcance? && !¿con alcance?
  crit
end