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