カテゴリー:
Rails
タグ:
 Rails4 悲観的ロック

このエントリーをはてなブックマークに追加
更新日時:
2014年02月17日(月)
作成日時:
2014年02月17日(月)

前の記事 / 次の記事

Rails4だと従来の書き方だと非推奨になってたのでメモ。

従来

Book.find(1, lock: true)

これはRails4から非推奨になっている。
lockが非推奨なんじゃなくてfindにオプションを渡すのが非推奨。

Rails4
findの前にlockを書くのがポイント。

Book.lock.find(1)
Book.lock(true).find(1)

ちなみにfindの後には付けられないか意味合いが変わる。
次のようには書けない。

Book.find(1).lock
Book.find(1).lock(true)

次のようには書けるが「findしたオブジェクトをlock!する」という意味になるので
SELECTのSQLが二回発行される。

Book.find(1).lock!

参考:stackoverflow: DEPRECATION WARNING: Passing options to #find is deprecated