Módulo: Mongoid::Persistable

Estendido por:
ActiveSupport::Concern
Inclui:
Criável, Excluível , Destruível, Incrementável, Lógico, Maxable, Minable, Multiplicável, Poppable, pullable, Pushable, Renomeável, Salvável, Configurável, Inconfiguravel, Atualizável , Upsertable, Posicional
Incluído em:
Componível
Definido em:
lib/mongoid/persistable.rb,
lib/mongoid/persistable/logical.rb,
lib/mongoid/persistable/maxable.rb,
lib/mongoid/persistable/minable.rb,
lib/mongoid/persistable/sovable.rb,
lib/mongoid/persistable/poppable.rb,
lib/mongoid/persistable/pullable.rb,
lib/mongoid/persistable/pushable.rb,
lib/mongoid/persistable/settable.rb,
lib/mongoid/persistable/createtable.rb,
lib/mongoid/persistable/deletable.rb,
lib/mongoid/persistable/renamable.rb,
lib/mongoid/persistable/updatable.rb,
lib/mongoid/persistable/unsettable.rb,
lib/mongoid/persistable/upsertable.rb,
lib/mongoid/persistable/destroyable.rb,
lib/mongoid/persistable/multipliable.rb,
lib/mongoid/persistable/incrementable.rb

Visão geral

Contém comportamento geral para operações de persistência.

Definido sob namespace

Módulos: Criável, Excluível , Destruível, Incrementável, Lógico, Maxable, Minable, Multiplicável, Poppable, pullable , Empurrável, Renomeável, Salvável , Configurável, Inconfiguravel , Atualizável, Inserível

Colapsode resumo constante

LIST_OPERATIONS =

As operações atômicas que lidam com arrays ou conjuntos no banco de dados.

[ "$addToSet", "$push", "$pull", "$pullAll" ].congelar

Recolhimento do Resumo do método de instância

Métodos incluídos em Unsettable

#unset

Métodos incluídos do Upsertable

#upsert

Métodos incluídos no Updateable

#update, #update!, #update_attribute

Métodos incluídos no Settable

#set

Métodos incluídos no Salvável

#save, #save!

Métodos incluídos do Renameable

#rename

Métodos incluídos no Pushable

#add_to_set, #push

Métodos incluídos do pullable

#pull, #pull_all

Métodos incluídos no Posicional

#positionalmente

Métodos incluídos do Poppable

#pop

Métodos incluídos no Multipliable

#mul

Métodos incluídos do Minable

#set_min

Métodos incluídos do Maxable

#set_max

Métodos incluídos do Logical

#bit

Métodos incluídos do Incrementable

#inc

Métodos incluídos do Destroyable

#destroy, #destroy!

Métodos incluídos no Deleteable

#delete

Métodos incluídos do Creable

#insert

Detalhes do método de instância

#atomicamente(join_context: nil) ➤ true | false

Executar operações atomicamente (em uma única chamada de banco de dados de dados) para tudo o que aconteceria dentro do bloco. Este método suporta o aninhamento de outras chamadas atomicamente, que se comportarão de acordo com as opções descritas abaixo.

Uma opção join_context pode ser fornecida que, quando verdadeira, mesclará as operações declaradas pelo bloco fornecido com o bloco atomicamente envolvendo a invocação atual para o mesmo documento, se houver. Se esse bloco ou qualquer outro bloco que compartilhar o mesmo contexto for gerado antes de persistir, todas as operações desse contexto não serão mantidas e também serão redefinidas na memória.

Quando join_context for falso, o bloco de operações fornecido será mantido independentemente de outros contextos. Falhas em outros contextos não afetarão este, desde que este bloco possa ser executado e persistir as alterações.

O valor padrão de join_context é definido pela opção de configuração global join_contexts, cujo próprio padrão é falso.

Exemplos:

Executar as operações atomicamente.

document.atomically do
  document.set(name: "Tool").inc(likes: 10)
end

Execute algumas operações internas atomicamente, mas independentemente das operações externas.


document.atomically do
  document.inc likes: 10
  document.atomically join_context: false do
    # The following is persisted to the database independently.
    document.unset :origin
  end
  document.atomically join_context: true do
    # The following is persisted along with the other outer operations.
    document.inc member_count: 3
  end
  document.set name: "Tool"
end

Parâmetros:

  • join_context (verdadeiro | falso) (padrão para: nil)

    Junte-se ao contexto (ou seja, mesclar operações atômicas declaradas) do bloco atomicamente que envolve este para o mesmo documento, se houver.

Retorna:

  • (verdadeiro | falso)

    Se a operação foi bem-sucedida.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Arquivo 'lib/mongoid/persistable.rb', linha 94

def atomicamente(join_context: nada)
  join_context = Mongoid.join_contexts se join_context.nada?
  call_depth = @atomic_depth ||= 0
  has_own_context = call_depth.zero? || !join_context
  @atomic_updates_to_execute_stack ||= []
  _mongoid_push_atomic_context se has_own_context

  se block_given?
    @atomic_depth += 1
    rendimento(auto)
    @atomic_depth -= 1
  end

  se has_own_context
    persist_atomic_operations @atomic_context
    _mongoid_remove_atomic_context_changes
  end

  true
salvar StandardError => e
  _mongoid_reset_atomic_context_changes! se has_own_context
  aumentar e
garantir
  _mongoid_pop_atomic_context se has_own_context

  se call_depth.zero?
    @atomic_depth = nada
    @atomic_updates_to_execute_stack = nada
  end
end

#fail_ue_to_callback!(método) 3 Objeto

Crie um erro se uma chamada de resposta de resposta falhar.

Exemplos:

Crie o erro de chamada de resposta.

Person.fail_due_to_callback!(person, :create!)

Parâmetros:

  • Método (Símbolo)

    O método que está sendo chamado.

Aumenta:



143
144
145
# Arquivo 'lib/mongoid/persistable.rb', linha 143

def fail_ue_to_callback!(Método)
  aumentar Errors::Callback.Novo(auto.classe, Método)
end

#fail_ue_to_validation!Objeto

Crie um erro se a validação falhar.

Exemplos:

Aumente o erro de validação.

Person.fail_due_to_validation!(person)

Aumenta:



131
132
133
# Arquivo 'lib/mongoid/persistable.rb', linha 131

def fail_ue_to_validation!
  aumentar Errors::Validações.Novo(auto)
end