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

次のドキュメントに含まれます。
Mongoid
定義:
lib/mongoid/clients/sessions.rb

定数の概要の削減

CALLBACK_ACTIONS =

この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。

トランザクションのコールバックをtriggerするために使用できるアクション。

[:create, :破棄, :update]

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

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

# after_commit (*args, &stream) =オブジェクト

トランザクションのコミット後に呼び出されるコールバックを設定します。 コールバックは、トランザクション内でドキュメントが作成、更新、または破棄された場合にのみ呼び出されます。

メソッド パラメータと可能なオプションの詳細については、 ActiveSupport::Callbacks::ClassMethods::set_callbackを参照してください。



114
115
116
117
# ファイル 'lib/mongoid/clients/sessions.rb' は、 114行

デフォルト after_commit(*args, &ブロック)
  set_options_for_ Callbacks(args)
  set_colback(:commit, : after, *args, &ブロック)
end

# after_create_commit (*args, &stream) =オブジェクト

after_commit :hook、on: :createのショートカット。



126
127
128
129
# ファイル 'lib/mongoid/clients/sessions.rb' は、 126行

デフォルト after_create_commit(*args, &ブロック)
  set_options_for_ Callbacks(args, on: :create)
  set_colback(:commit, : after, *args, &ブロック)
end

# after_detroy_commit (*args, &stream) =オブジェクト

after_commit :hook、on: :deletyのショートカット。



138
139
140
141
# ファイル 'lib/mongoid/clients/sessions.rb' は、 138行

デフォルト after_destructy_commit(*args, &ブロック)
  set_options_for_ Callbacks(args, on: :破棄)
  set_colback(:commit, : after, *args, &ブロック)
end

# afterRoll_back (*args, &stream) =オブジェクト

このコールバックは、作成、更新、または破棄された後に呼び出されます。

オプションについては、 after_commitのドキュメントを確認してください。



146
147
148
149
# ファイル 'lib/mongoid/clients/sessions.rb' は、 146行

デフォルト afterRollback(*args, &ブロック)
  set_options_for_ Callbacks(args)
  set_colback(:rollback, : after, *args, &ブロック)
end

# after_save_commit (*args, &stream) =オブジェクト

after_commit のショートカット [ :create, :update ]



120
121
122
123
# ファイル 'lib/mongoid/clients/sessions.rb' は、 120行

デフォルト after_save_commit(*args, &ブロック)
  set_options_for_ Callbacks(args, on: [ :create, :update ])
  set_colback(:commit, : after, *args, &ブロック)
end

# after_update_commit (*args, &stream) =オブジェクト

after_commit :hook、on: :updateのショートカット。



132
133
134
135
# ファイル 'lib/mongoid/clients/sessions.rb' は、 132行

デフォルト after_update_commit(*args, &ブロック)
  set_options_for_ Callbacks(args, on: :update)
  set_colback(:commit, : after, *args, &ブロック)
end

トランザクションの数(オプション = {}、session_options: {}) {... } =オブジェクト

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

ブロックでエラーが発生しない場合、トランザクションはコミットされます。 エラーが発生した場合、トランザクションは中止されます。 エラーは 'Mongoid::Errors::Rollback' を除き、 に渡されます。 このエラーは渡されないため、トランザクションを意図的にロールバックする場合は、 は で発生します。

パラメーター:

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

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

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

    セッション オプション。 MongoDB トランザクションはセッション内で開始される必要があるため、セッションが開始されます。 利用可能なセッション オプションについては、 ドライバー のドキュメントを参照してください。

結果:

  • 指定されたブロックはトランザクション内で実行されます。

次の値が発生します。



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# ファイル 'lib/mongoid/clients/sessions.rb' は、 87行

デフォルト トランザクション(options = {}, session_options: {})
  with_session(session_options) 行う |セッション|
    begin
      セッション.start_transaction(options)
      ノードの数
      commit_transaction(セッション)
    ヘルプ Mongoid::Errors::Rollback
      abort_transaction(セッション)
    ヘルプ Mongoid::Errors::InvalidSessionNesting
      # セッションはここで終了する必要があります。
      発生 Mongoid::Errors::InvalidTransactionNesting.新着情報
    ヘルプ mongo::エラー::InvalidSession, mongo::エラー::InvalidTransactionOperation => e
      abort_transaction(セッション)
      発生 Mongoid::Errors::TransactionError(e)
    ヘルプ 標準エラー => e
      abort_transaction(セッション)
      発生 e
    end
  end
end

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

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

例:

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

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

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



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# ファイル 'lib/mongoid/clients/sessions.rb' は、 42行

デフォルト with_session(options = {})
  場合 スレッド.get_session(クライアント: duration_context.クライアント)
    発生 Mongoid::Errors::InvalidSessionNesting.新着情報
  end
  セッション = duration_context.クライアント.start_session(options)
  スレッド.set_session(セッション, クライアント: duration_context.クライアント)
  ノードの数(セッション)
ヘルプ mongo::エラー::InvalidSession => ex
  場合 mongo::エラー::SessionsNotSupported === ex
    発生 Mongoid::Errors::SessionsNotSupported.新着情報
  else
    発生 ex
  end
ヘルプ mongo::エラー::OperationFailure => ex
  場合 (ex.コード == 40415 & & ex.server_message =~ /startTransaction/) ||
     (ex.コード == 20 & & ex.server_message =~ /トランザクション/)
    発生 Mongoid::Errors::TransactionsNotSupported.新着情報
  else
    発生 ex
  end
保証する
  スレッド.clear_session(クライアント: duration_context.クライアント)
end