モジュール: Mongoid::Clients::Sessions::Classメソッドs

定義:
build/mongoid- 8.1 /lib/mongoid/clients/sessions.rb

インスタンス メソッドの概要を折りたたむ

インスタンス メソッドの詳細

# with_session (オプション = {}){{|The| ... } =オブジェクト

注:

別のクライアントを使用するモデルまたはオブジェクトを使用して、ブロック内で操作を実行することはできません。ブロックは暗黙的なセッションのコンテキストですべての操作を実行し、別のクライアントを使用するモデルに対する操作は失敗します。 たとえば、特定のモデルでstore_in を使用してクライアントを設定し、セッション コンテキスト ブロックでその操作を実行すると、その操作ではブロックのセッションが使用できなくなり、エラーが発生します。 また、セッションをネストすることもできません。

セッションのコンテキスト内でブロックを実行します。

例:

セッション のコンテキストでいくつかの操作を実行します。

Band.with_session(causal_consistency: true) do
  band = Band.create
  band.records << Record.new
  band.save
  band.reload.records
end

パラメーター:

  • options ハッシュ (デフォルトは{}です)

    セッション オプション。 利用可能なセッション オプションについては、 ドライバー のドキュメントを参照してください。

生成パラメータ:

  • この Mongo::Session

    ブロックに使用されるセッション。

次の値を返します。

  • オブジェクト

    ブロックを呼び出した結果。

次の値が発生します。

  • Errors::InvalidSessionUse

    セッションが開始された別のクライアントを使用してモデルで操作が試行された場合、またはセッションがネストされている場合。



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
ファイル 'Build/mongoid- 8.1 /lib/mongoid/clients/sessions.rb ', 行89

デフォルト with_session(options = {})
  場合 スレッド.get_session
    発生 Mongoid::Errors::InvalidSessionUse.新着情報(:invalid_session_ Nesting)
  end
  セッション = duration_context.クライアント.start_session(options)
  スレッド.set_session(セッション)
  ノードの数(セッション)
ヘルプ mongo::エラー::InvalidSession => ex
  場合 mongo::エラー::SessionsNotSupported === ex
    発生 Mongoid::Errors::InvalidSessionUse.新着情報(:sessions_not_supported)
  end
  発生 Mongoid::Errors::InvalidSessionUse.新着情報(:invalid_session_use)
保証する
  スレッド.clear_session
end