Módulo: Mongoid::Scopable::ClassMethods

Definido en:
lib/mongoid/scopable.rb

Colapso del resumen del método de instancia

Detalles del método de instancia

#¿Default_scopable?verdadero | falso

¿Es posible que la clase tenga aplicado el ámbito predeterminado?

Ejemplos:

¿Se puede aplicar el alcance predeterminado?

Band.default_scopable?

Devuelve:

  • (verdadero | falso)

    Si se puede aplicar el alcance predeterminado.



95
96
97
# Archivo 'lib/mongoid/scopable.rb', línea 95

def ¿Se puede copiar por defecto?
  ¿alcance predeterminado? && !Compacto.¿sin_alcance_predeterminado?(yo)
end

#default_scope(value = nil) ⇒ Proc

Añade un alcance predeterminado al modelo. Este alcance se aplicará a todos los criterios, a menos que se especifique #unscoped.

Ejemplos:

Defina un alcance predeterminado con un criterio.

class Band
  include Mongoid::Document
  field :active, type: Boolean
  default_scope where(active: true)
end

Define un ámbito predeterminado con un procedimiento.

class Band
  include Mongoid::Document
  field :active, type: Boolean
  default_scope ->{ where(active: true) }
end

Parámetros:

  • valor (Proc| Criterios) (predeterminado: nulo)

    El alcance predeterminado.

Devuelve:

  • (Procedimiento)

    El alcance predeterminado.

Aumentos:

  • (Errores::InvalidScope)

    Si el alcance no es un procedimiento o criterio.



83
84
85
86
87
# Archivo 'lib/mongoid/scopable.rb', línea 83

def default_scope(valor = nulo)
  valor = Proc.Nuevo { rendimiento } Si ¿bloque_dado?
  comprobar_la_validez_del_alcance(valor)
  yo.alcance predeterminado = alcance_predeterminado_del_proceso(valor)
end

#queryableCriteria

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga un objeto consultable, ya sea el último en la pila de alcance o uno nuevo.

Ejemplos:

Obtenga una consulta.

Model.queryable

Devuelve:



107
108
109
110
111
# Archivo 'lib/mongoid/scopable.rb', línea 107

def consultable
  crit = Compacto.alcance actual(yo) || Criterios.Nuevo(yo)
  crit.incrustado = true Si (crit.klass.¿incorporado? && !crit.klass.¿cíclico?)
  crit
end

#alcance(nombre, valor y bloque) ⇒ Objeto

Cree un ámbito al que se pueda acceder desde el nivel de clase o encadenarlo a criterios mediante el nombre proporcionado.

Ejemplos:

Crear ámbitos con nombre.


class Person
  include Mongoid::Document
  field :active, type: Boolean
  field :count, type: Integer

  scope :active, -> { where(active: true) }
  scope :at_least, ->(count){ where(:count.gt => count) }
end

Parámetros:

  • Nombre ( Símbolo) -

    El nombre del alcance.

  • valor (Procedimiento)

    Las condiciones del alcance.

Aumentos:

  • (Errores::InvalidScope)

    Si el alcance no es un procedimiento.

  • (Errores::ScopeOverwrite)

    Si el nombre del alcance ya existe.



132
133
134
135
136
137
138
139
140
141
# Archivo 'lib/mongoid/scopable.rb', línea 132

def ámbito de aplicación(Nombre, valor, Ybloque)
  normalizado = Nombre.a_sym
  comprobar_la_validez_del_alcance(valor)
  nombre_del_ámbito_de_comprobación(normalizado)
  _ámbitos_declarados[normalizado] = {
    alcance: valor,
    extensión: Module.Nuevo(Ybloque)
  }
  método de definición de alcance(normalizado)
end

# alcance(opciones = nulo) ⇒ Criterios

Nota:

Esto forzará que se aplique el alcance predeterminado.

Obtenga un criterio para el documento con alcance normal.

Ejemplos:

Obtenga los criterios.

Band.scoped(skip: 10)

Parámetros:

  • opciones (Hash) (predeterminado: nulo)

    Opciones de consulta para los criterios.

Opciones Hash(opciones):

  • :saltar (Entero)

    Número opcional de documentos a omitir.

  • :limit (Entero)

    Número opcional de documentos a limitar.

  • :sort (arreglo)

    Opciones de clasificación opcionales.

Devuelve:



158
159
160
# Archivo 'lib/mongoid/scopable.rb', línea 158

def con alcance(opciones = nulo)
  consultable.con alcance(opciones)
end

#ámbitosHash

Devuelve un hash de todos los ámbitos definidos para esta clase, incluidos los ámbitos definidos en clases antecesoras.

Ejemplos:

Obtener los alcances definidos para una clase

class Band
  include Mongoid::Document
  field :active, type: Boolean

  scope :active, -> { where(active: true) }
end
Band.scopes

Devuelve:

  • (Hash)

    Los alcances definidos para esta clase



51
52
53
54
55
56
57
58
59
# Archivo 'lib/mongoid/scopable.rb', línea 51

def ámbitos
  ámbitos definidos = {}
  antepasados.marcha atrás.cada hacer |klass|
    Si klass.respond_to?(:_ámbitos_declarados)
      ámbitos definidos.¡unir!(klass._ámbitos_declarados)
    end
  end
  ámbitos definidos.freeze
end

#sin ámbitoCriterios | Objeto

Nota:

Esto obligará a que el ámbito por defecto, así como cualquier ámbito aplicado mediante ".with_scope", se elimine.

Obtenga los criterios sin aplicar ningún alcance.

Ejemplos:

Obtener los criterios no acotados.

Band.unscoped

Ceder al bloque sin delimitación de alcance.

Band.unscoped do
  Band.where(name: "Depeche Mode")
end

Devuelve:

  • (Criterios | Objeto)

    Los criterios o resultados no delimitados del bloque.



177
178
179
180
181
182
183
184
185
186
187
# Archivo 'lib/mongoid/scopable.rb', línea 177

def sin alcance
  Si ¿bloque_dado?
    sin alcance predeterminado hacer
      con_alcance(nulo) hacer
        rendimiento(yo)
      end
    end
  else
    consultable.sin alcance
  end
end

#with_default_scopeCriterios También conocido como: criterios

Obtenga un criterio con el alcance predeterminado aplicado, si es posible.

Ejemplos:

Consigue un criterio con el alcance por defecto.

Model.with_default_scope

Devuelve:



195
196
197
# Archivo 'lib/mongoid/scopable.rb', línea 195

def con alcance predeterminado
  consultable.con alcance predeterminado
end

#with_scope(criterios) ⇒ Criterios

Inserta los criterios proporcionados en la pila de alcance y los elimina después de que se obtiene el bloque proporcionado.

Ejemplos:

Ceder ante los criterios.

Person.with_scope(criteria)

Parámetros:

  • criterios (Criterios) -

    Los criterios a aplicar.

Devuelve:



209
210
211
212
213
214
215
216
217
# Archivo 'lib/mongoid/scopable.rb', línea 209

def con_alcance(criterios)
  anterior = Compacto.alcance actual(yo)
  Compacto.establecer_alcance_actual(criterios, yo)
  begin
    rendimiento criterios
  asegurar
    Compacto.establecer_alcance_actual(anterior, yo)
  end
end

#sin_alcance_predeterminadoObjeto

Ejecuta el bloque sin aplicar el alcance predeterminado.

Ejemplos:

Ejecutar sin el ámbito por defecto.

Band.without_default_scope do
  Band.where(name: "Depeche Mode")
end

Devuelve:

  • (Objeto) -

    El resultado del bloque.



227
228
229
230
231
232
# Archivo 'lib/mongoid/scopable.rb', línea 227

def sin alcance predeterminado
  Compacto.comenzar_sin_alcance_predeterminado(yo)
  rendimiento
asegurar
  Compacto.salida_sin_alcance_predeterminado(yo)
end