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
但是当我跑,我发现了错误代码:
Attempted to update a stale object: Item
我不明白为什么,我遵循rails文档。
你有哪些文件?您正在尝试用新的数据覆盖新数据,而新的数据被锁定。 – Robin
@Robin http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html – bl0b
你有'lock_version'列吗?当你尝试运行你的交易时,它是最新的数字吗? – Robin