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.



90
91
92
# Archivo 'lib/mongoid/scopable.rb', línea 90

def ¿por defecto_limitable?
  default_scoping? && !Con hilo.sin_ámbito_predeterminado?(sí mismo)
end

#default_scope(value = nil, &block) ⇒ Proc

Agregar un ámbito por defecto al modelo. Este ámbito se aplicará a todos los criterios a menos que se especifique #unscopeado.

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) (valor por defecto: nil)

    El ámbito por defecto.

Devuelve:

  • (Proc)

    El ámbito por defecto.

Aumenta:



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

def default_scope(Valor = nulo, &bloque)
  Valor = proc(&bloque) si ¿block_given?
  comprobar:validez_del_ámbito(Valor)
  sí mismo.scoping por defecto = process_default_scope(Valor)
end

#queryableCriteria

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.

Obtén una consulta, ya sea la última en la pila de ámbito o una nueva.

Ejemplos:

Adquiera un objeto consultable.

Model.queryable

Devuelve:



102
103
104
105
106
# Archivo 'lib/mongoid/scopable.rb', línea 102

def consultable
  crit = Con hilo.current_scope(sí mismo) || Criterios.Nuevo(sí mismo)
  crit.integrado = true si crit.klass.¿Incorporado? && !crit.klass.¿cíclico?
  crit
end

#scope(name, value, &block) ⇒ Object

Crear un alcance que pueda ser accedido desde el nivel de clase o encadenado a criterios mediante el nombre proporcionado.

Ejemplos:

Crea ámbitos nombrados.


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:



127
128
129
130
131
132
133
134
135
136
# Archivo 'lib/mongoid/scopable.rb', línea 127

def Alcance(Nombre, Valor, &bloque)
  normalizado = Nombre.to_sym
  comprobar:validez_del_ámbito(Valor)
  check_scope_name(normalizado)
  _declared_scopes[normalizado] = {
    alcance: Valor,
    extensión: Module.Nuevo(&bloque)
  }
  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:

Obtén los criterios.

Band.scoped(skip: 10)

Parámetros:

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

    Opciones de query para los criterios.

Opciones Hash (options):

  • Omitir (Integer)

    Número opcional de documentos a omitir.

  • :limit (Integer)

    Número opcional de documentos para limitar.

  • :sort (arreglo)

    Opciones de ordenación opcionales.

Devuelve:



153
154
155
# Archivo 'lib/mongoid/scopable.rb', línea 153

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

#scopesHash

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



48
49
50
51
52
53
54
# Archivo 'lib/mongoid/scopable.rb', línea 48

def alcances
  defined_scopes = {}
  ancestros.reverse_each hacer |klass|
    defined_scopes.¡Actualizar!(klass._declared_scopes) si klass.respond_to?(scopes_declaradas)
  end
  defined_scopes.freeze
end

#sin ámbitoCriterios | Objeto

Nota:

Esto obligará a eliminar tanto el ámbito por defecto como cualquier ámbito aplicado mediante .with_scope.

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)

    El criterio o resultado no restringido del bloque.



172
173
174
175
176
177
178
179
180
181
182
# Archivo 'lib/mongoid/scopable.rb', línea 172

def sin ámbito
  si ¿block_given?
    sin_ámbito_predeterminado hacer
      with_scope(nulo) hacer
        rendimiento(sí mismo)
      end
    end
  else
    consultable.sin ámbito
  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:



190
191
192
# Archivo 'lib/mongoid/scopable.rb', línea 190

def con_ámbito_predeterminado
  consultable.con_ámbito_predeterminado
end

#with_scope(criteria) ⇒ Criterios

Se añaden los criterios proporcionados a la pila de alcance y se remueven después de que se devuelva el bloque proporcionado.

Ejemplos:

Ceder ante los criterios.

Person.with_scope(criteria)

Parámetros:

  • criterios (Criterios)

    Los criterios a aplicar.

Devuelve:



204
205
206
207
208
209
210
211
212
# Archivo 'lib/mongoid/scopable.rb', línea 204

def with_scope(criterios)
  anterior = Con hilo.current_scope(sí mismo)
  Con hilo.set_current_scope(criterios, sí mismo)
  begin
    rendimiento criterios
  asegurar
    Con hilo.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.



222
223
224
225
226
227
# Archivo 'lib/mongoid/scopable.rb', línea 222

def sin_ámbito_predeterminado
  Con hilo.begin_without_default_scope(sí mismo)
  rendimiento
asegurar
  Con hilo.salir_sin_ámbito_predeterminado(sí mismo)
end