u16suzuの blog

日々学んだことのメモブログです。

今日も Rails Guides を少し読み進めた。

Railsが提供している楽観的ロックについて。

楽観的ロックは複数の異なるプロセスが1つのレコードを同時に編集することを許可する。 そして,レースコンディションが起きたとき ActiveRecord::StaleObjectError を投げる。

レースコンディションが発生するタイミングは, 同じカラムを編集してしまった場合で 異なるカラムを編集した場合は無事保存される。

楽観的ロックをしたいテーブルに lock_version カラムを integer で作成しておく必要がある。 ActiveRecord::Base.lock_optimistically = false とすることで, この挙動はオフにすることができる。