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

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:



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.scoping_options = 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.

Parámetros:

  • Alcance (Proc | Symbol | Criteria | nil)

    El alcance para aplicar.

Devuelve:

  • (Criterios)

    Los criterios con el alcance aplicado.



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.

Ejemplos:

Remueva el alcance.

criteria.remove_scoping(other)

Parámetros:

  • Otros (Criterios)

    Los demás criterios.

Devuelve:

  • (Criterios)

    Los criterios con alcance eliminado.



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 |meta|
      inclusiones.delete_one(meta)
    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.

Ejemplos:

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

criteria.scoped(skip: 10)

Parámetros:

  • opciones (Hash) (predeterminado: nulo)

    Opciones de query adicionales.

Devuelve:



77
78
79
80
81
82
83
84
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 77

def delimitado(opciones = nulo)
  crit = clon
  crit.opciones.¡unir!(opciones || {})
  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?

Ejemplos:

¿Se ha aplicado el alcance por defecto?

criteria.scoped?

Devuelve:

  • (true | false)

    Si se aplica el alcance por defecto.



92
93
94
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 92

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

#opciones_de_alcanceMatriz

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.



127
128
129
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 127

def scoping_options
  [ (¿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).

Ejemplos:

Establecer las opciones de alcance.

criteria.scoping_options = true, false

Parámetros:

  • opciones (arreglo)

    Con alcance, sin alcance.

Devuelve:

  • (arreglo)

    Las nuevas opciones de alcance.



139
140
141
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 139

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:



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.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.



117
118
119
# Archivo 'lib/mongoid/criteria/scopable.rb', línea 117

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

#con_alcance_predeterminadoCriterios

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:



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