Módulo: Mongoid::Scopable::ClassMethods

Definido en:
lib/mongoid/scopable.rb

Resumen del método de instancia colapsar

Detalles del método de instancia

#¿Default_scopable?verdadero | falso

¿Puede la clase tener aplicado el ámbito por defecto?

Ejemplos:

¿Se puede aplicar el ámbito por defecto?

Band.default_scopable?

Devuelve:

  • (true | false)

    Si se puede aplicar el alcance por defecto.



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

def ¿Se puede copiar por defecto?
  default_scoping? && !Compacto.sin_ámbito_predeterminado?(sí mismo)
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 por defecto con un criterio.

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

Definir un ámbito por defecto 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:

  • (Proc)

    El alcance predeterminado.

Aumenta:



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

def default_scope(Valor = nulo)
  Valor = Proc.Nuevo { rendimiento } si ¿block_given?
  comprobar:validez_del_ámbito(Valor)
  sí mismo.alcance predeterminado = process_default_scope(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:

Adquiera un objeto consultable.

Model.queryable

Devuelve:



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

def consultable
  crit = Compacto.current_scope(sí mismo) || Criterios.Nuevo(sí mismo)
  crit.integrado = 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 (Proc)

    Las condiciones del alcance.

Aumenta:

  • (Errors::InvalidScope)

    Si el ámbito no es un procedimiento.

  • (Errores::ScopeOverwrite)

    Si el nombre de ámbito ya existe.



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

def Alcance(Nombre, Valor, Ybloque)
  normalizado = Nombre.to_sym
  comprobar:validez_del_ámbito(Valor)
  check_scope_name(normalizado)
  _declared_scopes[normalizado] = {
    alcance: Valor,
    extensión: Module.Nuevo(Ybloque)
  }
  define_scope_method(normalizado)
end

#con alcance(opciones = nulo) ⇒ Criterios

Nota:

Esto obligará a que se aplique el ámbito por defecto.

Obtener 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 (options):

  • Omitir (Entero)

    Número opcional de documentos a omitir.

  • :limit (Entero)

    Número opcional de documentos para limitar.

  • :sort (arreglo)

    Opciones de ordenación opcionales.

Devuelve:



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

def delimitado(opciones = nulo)
  consultable.delimitado(opciones)
end

#ámbitosHash

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

Ejemplos:

Obtener las alcances definidos para una clase.

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

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

Devuelve:

  • (encriptada)

    Los alcances definidos para esta clase



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

def alcances
  ámbitos definidos = {}
  antepasados.reversa.cada hacer |klass|
    si klass.respond_to?(:_ámbitos_declarados)
      ámbitos definidos.¡unir!(klass._declared_scopes)
    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.

Obtener los criterios sin tener en cuenta 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 ¿block_given?
    sin_ámbito_predeterminado hacer
      with_scope(nulo) hacer
        rendimiento(sí mismo)
      end
    end
  else
    consultable.sin alcance
  end
end

#with_default_scopeCriterios También conocido como: criterios

Obtener un criterio con el alcance por defecto 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_ámbito_predeterminado
  consultable.con_ámbito_predeterminado
end

#with_scope(criteria) ⇒ 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 with_scope(criterios)
  anterior = Compacto.current_scope(sí mismo)
  Compacto.set_current_scope(criterios, sí mismo)
  begin
    rendimiento criterios
  asegurar
    Compacto.set_current_scope(anterior, sí mismo)
  end
end

#without_default_scopeObject

Execute el bloque sin aplicar el scope por defecto.

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_ámbito_predeterminado
  Compacto.comenzar_sin_alcance_predeterminado(sí mismo)
  rendimiento
asegurar
  Compacto.salida_sin_alcance_predeterminado(sí mismo)
end