行ロックとは 行ロックとは、テーブルの同一レコードに対して、複数同時に更新できないように制限する仕組みのことです。 Ruby on RailsのActiveRecordには2種類のロック方法があります。 楽観的ロック(Rails依存) 悲観的ロック(DBMS依存) それぞれの違いや使い方について解説していきたいと思います。 楽観的ロック 楽観的ロックとは、DBMSの機能に頼らずロックバージョンをレコードに保存しておくことで、取得時と変更時にロックバージョンに変更がないか確認し、変更があった場合は例外を発生させる方法です。 ロックするタイミング データ更新時 データを複数同時に取得することができるが、途中で更新されていた場合は、更新できない 仕組み テーブルにlock_versionフィールドを追加する lock_versionが書き換わっていたらActiveRecord::StaleObj
![ActiveRecordで行ロックをかける方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/e421505ce6d072d19eebf4047670deefa0b6cdea/height=288;version=1;width=512/https%3A%2F%2Fkray.jp%2Fwp%2Fwp-content%2Fuploads%2F2021%2F05%2Fogp.jpg)