Módulo: Mongoid::Association::Referenced::CounterCache::ClassMethods

Definido em:
lib/mongoid/association/referenced/counter_cache.rb

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#decrement_counter(counter_name, ID) ➤ Objeto

Diminua o nome do contador das entradas que correspondem ao ID por um. Este método é usado em chamadas de resposta de associações quando counter_cache está habilitado

Exemplos:

Diminuir contador de comentários

Post.decrement_counter(:comments_count, '50e0edd97c71c17ea9000001')

Parâmetros:

  • counter_name (Símbolo)

    Nome do cache do contador

  • id (string)

    A ID do objeto que terá seu contador diminuído.



84
85
86
# File 'lib/mongoid/association/referenced/counter_cache.rb', linha 84

def decrement_counter(counter_name, id)
  update_counters(id, counter_name.to_sym => -1)
end

#increment_counter(counter_name, ID) ⇒ Object

Aumente o nome do contador das entradas que correspondem ao ID por um. Este método é usado em chamadas de resposta de associações quando counter_cache está habilitado

Exemplos:

Incrementar contador de comentários

Post.increment_counter(:comments_count, '50e0edd97c71c17ea9000001')

Parâmetros:

  • counter_name (Símbolo)

    Nome do cache do contador

  • id (string)

    A ID do objeto que terá seu contador incrementado.



71
72
73
# File 'lib/mongoid/association/referenced/counter_cache.rb', linha 71

def incremento_counter(counter_name, id)
  update_counters(id, counter_name.to_sym => 1)
end

#reinício_counters(ID, *counters) ➤ Objeto

Redefinir o contador fornecido usando o .count() query do banco de dados. Este método é útil caso um contador tenha sido corrompido ou um novo contador tenha sido adicionado à coleção.

Exemplos:

Redefinir o cache do contador fornecido

Post.reset_counters('50e0edd97c71c17ea9000001', :comments)

Parâmetros:

  • id (string)

    A ID do objeto que será redefinido.

  • *counters (Símbolo...)

    Um ou mais caches de contador para redefinir.



39
40
41
42
43
44
45
46
# File 'lib/mongoid/association/referenced/counter_cache.rb', linha 39

def reinício_contadores(id, *Contadores)
  documento = id.is_a?(Documento) ? id : find(id)
  Contadores.cada fazer |name|
    connection_association = relações[name]
    counter_name = connection_association.inverse_association.counter_cache_column_name
    documento.update_attribute(counter_name, documento.enviar(name).contar)
  end
end

#update_counters(ID, contadores) ➤ Objeto

Atualize os contadores fornecidos pelo fator de valor. Ele usa o comando atômico $inc.

Exemplos:

Adicione 5 ao contador de comentários e remova 2 das preferências

counter.
Post.update_counters('50e0edd97c71c17ea9000001',
           :comments_count => 5, :likes_count => -2)

Parâmetros:

  • id (string)

    A ID do objeto a ser atualizado.

  • Contadores (Hash)


58
59
60
# File 'lib/mongoid/association/referenced/counter_cache.rb', linha 58

def update_counters(id, Contadores)
  ONDE(:_id => id).inc(Contadores)
end