Menu Docs
Página inicial do Docs
/ / /
Mongoid
/

Sessões

Nesta página

  • Utilizando uma sessão via Model#with_session
  • Usando uma sessão via model#with_session

Você pode usar sessões com o Mongoid de forma semelhante à que executaria uma transação no ActiveRecord. Ou seja, você pode chamar um método, #with_session em uma classe de modelo ou em uma instância de um modelo e executar algumas operações em um bloco. Todas as operações no bloco serão executadas no contexto de sessão única. Consulte a documentação do driver Ruby do MongoDB para saber quais opções de sessão estão disponíveis.

Observe as seguintes limitações de sessões:

  • As sessões não podem ser compartilhadas entre threads; as sessões não são seguras para threads. Isso é consistente com o suporte do driver Ruby para sessões.

  • As sessões não podem ser aninhadas. Você não pode chamar #with_session em uma classe de modelo ou em uma instância de modelo dentro do bloco passado para o método #with_session em outra classe de modelo ou instância de modelo.

  • Todas as classes e instâncias de modelo usadas no bloco de sessão devem usar o mesmo driver cliente. Por exemplo, se você especificou um storage_options diferente para outro modelo usado no bloco da classe do modelo ou instância na qual o #with_session é chamado, você receberá um erro.

Chame #with_session em uma classe de modelo e passe as opções de sessão para executar um bloco no contexto de uma sessão.

Person.with_session(causal_consistency: true) do
Person.create!
person = Person.first
person.name = "Emily"
person.save
end

Chame #with_session em uma instância de modelo e passe as opções de sessão para executar um bloco no contexto de uma sessão.

person.with_session(causal_consistency: true) do
person.username = 'Emily'
person.save
person.posts << Post.create!
end

Voltar

Chamadas de resposta