Módulo: Mongoid::Criteria::Scopable

Incluído em:
Mongoid::Criteria
Definido em:
lib/mongoid/criteria/scopable.rb

Visão geral

Módulo Mixin incluído no Mongoid::Criteria que adiciona funcionalidades relacionadas a escopos de query padrão e escopos nomeados.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#apply_default_scope ➤ Critérios

Aplica o escopo padrão aos critérios.

Exemplos:

Aplique o escopo padrão.

criteria.apply_default_scope

Retorna:



18
19
20
21
22
23
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 18

def apply_default_scope
  classe.sem_default_scope fazer
    mesclar!(classe.default_scoping.Chame)
  end
  auto.scope_options = true, false
end

#apply_scope(scope) ➤ Critérios

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Aplica um escopo aos critérios atuais.

Este método não modifica o receptor, mas pode retornar um novo objeto ou o receptor, dependendo do argumento: se o argumento scope for nulo, o receptor será retornado sem modificação, caso contrário, um novo objeto de critérios será retornado.

Parâmetros:

  • escopo (Proc | Symbol | Criteria | nil)

    O escopo a ser aplicado.

Retorna:

  • (Critérios)

    Os critérios com o escopo aplicado.



37
38
39
40
41
42
43
44
45
46
47
48
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 37

def apply_scope(escopo)
  caso escopo
  quando Proc
    instance_exec(&escopo)
  quando Símbolo
    enviar(escopo)
  quando critério
    mesclar(escopo)
  mais
    auto
  end
end

#remove_scoping( other ) ➤ Critérios

Dado outros critérios, remova o escopo dos outros critérios desses critérios.

Exemplos:

Remova o escopo.

criteria.remove_scoping(other)

Parâmetros:

Retorna:

  • (Critérios)

    Os critérios com escopo removido.



59
60
61
62
63
64
65
66
67
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 59

def remove_scope(Outro)
  se Outro
    rejeitar_matching(Outro, :selector, :opções)
    Outro.inclusões.cada fazer |meta|
      inclusões.delete_one(meta)
    end
  end
  auto
end

#scoped(options = nil) ➤ Critérios

Força os critérios a serem analisados, a menos que esteja dentro de um bloco sem escopo.

Exemplos:

Forçar os critérios a serem definidos.

criteria.scoped(skip: 10)

Parâmetros:

  • opções (Hash) (padrão para: nil)

    Opções adicionais de query.

Retorna:



77
78
79
80
81
82
83
84
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 77

def com escopo(opções = nada)
  crit = clonar
  crit.opções.mesclar!(opções || {})
  se classe.default_scopeble? && !escopo?
    crit.apply_default_scope
  end
  crit
end

#escopo?verdadeiro | false

Os critérios tiveram o escopo padrão aplicado?

Exemplos:

O escopo padrão é aplicado?

criteria.scoped?

Retorna:

  • (verdadeiro | falso)

    Se o escopo padrão for aplicado.



92
93
94
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 92

def escopo?
  !!(definido?(@scoped) ? @scoped : nada)
end

#scoping_options ➤ Array

Obtenha as opções de escopo dos critérios, como um par (com escopo, sem escopo).

Exemplos:

Obtenha as opções de escopo.

criteria.scoping_options

Retorna:

  • (Array)

    Com escopo e sem escopo.



127
128
129
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 127

def scope_options
  [ (definido?(@scoped) ? @scoped : nada), (definido?(@unscoped) ? @unscoped : nada) ]
end

#scoping_options=(opções) ➤ Array

Defina as opções de escopo dos critérios, como um par (com escopo, sem escopo).

Exemplos:

Defina as opções de escopo.

criteria.scoping_options = true, false

Parâmetros:

  • opções (Array)

    Com escopo e sem escopo.

Retorna:

  • (Array)

    As novas opções de escopo.



139
140
141
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 139

def scopeing_options=(opções)
  @scoped, @unscoped = opções
end

#sem escopoCritérios

Limpa todo o escopo dos critérios.

Exemplos:

Limpe todo o escopo dos critérios.

criteria.unscoped

Retorna:



102
103
104
105
106
107
108
109
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 102

def sem escopo
  crit = clonar
  a menos que sem escopo?
    crit.scope_options = false, true
    crit.seletor.Limpar; crit.opções.Limpar
  end
  crit
end

#sem escopo?verdadeiro | false

Os critérios não têm escopo?

Exemplos:

Os critérios não têm escopo?

criteria.unscoped?

Retorna:

  • (verdadeiro | falso)

    Se os critérios forem forçados sem escopo.



117
118
119
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 117

def sem escopo?
  !!(definido?(@unscoped) ? @unscoped : nada)
end

#with_default_scope ➤ Critérios

Obtenha os critérios com o escopo padrão aplicado, se o escopo padrão puder ser aplicado. Casos em que não pode ocorrer: se estivermos em um bloco sem escopo, se o critério já tiver sido forçado sem escopo ou se o escopo padrão já tiver sido aplicado.

Exemplos:

Obtenha os critérios com o escopo padrão.

criteria.with_default_scope

Retorna:



152
153
154
155
156
157
158
# Arquivo 'lib/mongoid/criteria/scopable.rb', linha 152

def with_default_scope
  crit = clonar
  se classe.default_scopeble? && !sem escopo? && !escopo?
    crit.apply_default_scope
  end
  crit
end