現在RubyonRailsを用いた排他制御について学びたいと考えております。
まずRailsを用いた排他制御には以下2種類がある認識です。(ほとんど概要ですがご容赦ください)
悲観ロック
- 「競合が起きるだろう」という前提
- モデルのlockメソッドを使用する
楽観ロック
- 「競合は多分起きないだろう」という前提
- テーブルにlock_versionカラムを追加
ただ、RubyonRailsにはActiveRecord::Base.transaction
というメソッドがあり
基本的には排他制御はこちらで足りるのではないかという認識です。
私の理解が間違っていましたら申し訳ないのですが、
ActiveRecord::Base.transaction
を使用するだけでは足りない場合が存在するのでしょうか?
また、わざわざ上述したような実装
(モデルのlockメソッドを使用する、だったりテーブルにlock_versionカラムを追加したり、という実装です)
をしなければいけない場合ってどんな場合が該当するのでしょうか?
回答1件
あなたの回答
tips
プレビュー