1

コントローラーに次のコードがあります。

Item.transaction do
  item = JobDistribution.lock(true).find(params[:id])
  item.update_attributes(status: JobDistribution.statuses[:processing])
  respond_to do |format|
    format.json { render :json => "object processing", status: :success }
  end
end

しかし、コードを実行するとエラーが発生します:

古いオブジェクトを更新しようとしました: アイテム

理由がわかりません。レールのドキュメントに従いました。

4

1 に答える 1

3

lock_versionfindは楽観的ロック用です。また、から連鎖して悲観的ロックを使用していますlock。Rails は 2 つの間で混乱しています。どちらかを選んでください。

于 2015-11-04T16:14:47.087 に答える