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

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

定数の概要の削減

CALLBACK_ACTIONS =

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

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

%i[create 破棄する update]

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

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

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

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

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



108
109
110
111
# ファイル 'lib/mongoid/clients/sessions.rb' は、 108行

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

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

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



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

デフォルト 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: :destroy のショートカット。



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

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

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

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

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



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

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

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

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



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

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

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

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



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

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

結果:

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

次の値が発生します。



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# ファイル 'lib/mongoid/clients/sessions.rb' は、 83行

デフォルト トランザクション(options = {}, session_options: {}, &ブロック)
  with_session(session_options) 行う |セッション|
    セッション.with_transaction(options, &ブロック).タップ { run_commit_colbacks(セッション) }
  ヘルプ *transaction_not_supported_例外
    発生 Mongoid::Errors::TransactionsNotSupported
  ヘルプ Mongoid::Errors::Rollback
    run_abort_colbacks(セッション)
  ヘルプ Mongoid::Errors::InvalidSessionNesting
    # セッションはここで終了する必要があります。
    発生 Mongoid::Errors::InvalidTransactionNesting.新着情報
  ヘルプ mongo::エラー::InvalidSession, mongo::エラー::InvalidTransactionOperation => e
    run_abort_colbacks(セッション)
    発生 Mongoid::Errors::TransactionError.新着情報(e)
  ヘルプ 標準エラー => e
    run_abort_colbacks(セッション)
    発生 e
  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

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



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

デフォルト with_session(options = {})
  発生 Mongoid::Errors::InvalidSessionNesting.新着情報 場合 スレッド.get_session(クライアント: duration_context.クライアント)

  セッション = duration_context.クライアント.start_session(options)
  スレッド.set_session(セッション, クライアント: duration_context.クライアント)
  ノードの数(セッション)
ヘルプ mongo::エラー::InvalidSession => e
  発生 Mongoid::Errors::SessionsNotSupported.新着情報 場合 e.is_a?(mongo::エラー::SessionsNotSupported)

  発生 e
ヘルプ mongo::エラー::OperationFailure => e
  場合 (e.コード == 40_415 & & e.server_message =~ /startTransaction/) ||
     (e.コード == 20 & & e.server_message =~ /トランザクション/)
    発生 Mongoid::Errors::TransactionsNotSupported.新着情報
  else
    発生 e
  end
ヘルプ *transaction_not_supported_例外
  発生 Mongoid::Errors::TransactionsNotSupported
保証する
  スレッド.clear_modified_documents(セッション)
  スレッド.clear_session(クライアント: duration_context.クライアント)
end