トランザクション
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.2.1
- 7.0.0
説明
分割不可能な複数のレコードの更新を1つの単位にまとめて処理すること
特徴
- データベース内の情報の整合性を保つための手段
- 複数のデータベースにまたがる分散トランザクションはサポートしていない
- 使用するにはデータベースがトランザクションをサポートしていることが必要
使い方
ActiveRecord::Base.transaction do
例外が発生するかもしれない処理
end
例外が発生しなかった場合の処理
resque => e
例外が発生した場合の処理
モデル.transaction do
例外が発生するかもしれない処理
end
例外が発生しなかった場合の処理
resque => e
例外が発生した場合の処理
- ブロック内のすべての処理が正常に行われた場合に保存
- エラーが発生した場合は、ロードバック
例
def new
User.transaction do
a1 = User.new(name: 'tarou')
a1.save!
a2 = User.new(name: 'jirou')
a2.save!
end
render text: '更新に成功しました'
rescue: e
render text: e.message
end