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

Detalles del método de instancia

#apply_default_scopeCriteria

Aplica el alcance predeterminado a los criterios.

Ejemplos:

Aplicar el alcance predeterminado.

criteria.apply_default_scope

Devuelve:



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.opciones de alcance = 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.

Parámetros:

  • ámbito de aplicación (Proc | Symbol | Criteria | nil)

    El ámbito de aplicación.

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

Ejemplos:

Remueva el alcance.

criteria.remove_scoping(other)

Parámetros:

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, :opciones)
    otros.inclusiones.cada hacer |meta|
      inclusiones.delete_one(meta)
    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.

Ejemplos:

Forzar que los criterios tengan un alcance determinado.

criteria.scoped(skip: 10)

Parámetros:

  • opciones (Hash) (predeterminado: nulo)

    Opciones de consulta adicionales.

Devuelve:



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

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

Ejemplos:

¿Se aplica el alcance predeterminado?

criteria.scoped?

Devuelve:

  • (verdadero | falso)

    Si se aplica el alcance predeterminado.



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

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

#opciones_de_alcanceMatriz

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

Ejemplos:

Obtenga las opciones de alcance.

criteria.scoping_options

Devuelve:

  • (Matriz)

    Con alcance, sin alcance.



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

def opciones de alcance
  [ (¿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).

Ejemplos:

Establecer las opciones de alcance.

criteria.scoping_options = true, false

Parámetros:

  • opciones (Matriz)

    Con alcance, sin alcance.

Devuelve:

  • (Matriz)

    Las nuevas opciones de alcance.



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

def opciones_de_alcance=(opciones)
  @scoped, @sin ámbito = opciones
end

#sin ámbitoCriterios

Borra todo el alcance de los criterios.

Ejemplos:

Borrar 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 no ser que ¿sin alcance?
    crit.opciones de alcance = false, true
    crit.selector.borrar; crit.opciones.borrar
  end
  crit
end

# ¿sinámbito?verdadero | falso

¿El criterio no está delimitado?

Ejemplos:

¿El criterio no está delimitado?

criteria.unscoped?

Devuelve:

  • (verdadero | falso)

    Si los criterios son fuerza sin alcance.



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

def ¿sin alcance?
  !!(¿definido?(@sin ámbito) ? @sin ámbito : 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 alcance predeterminado
  crit = clon
  Si klass.¿Se puede copiar por defecto? && !¿sin alcance? && !¿alcance?
    crit.aplicar_alcance_predeterminado
  end
  crit
end