MCB*_*MCB 7 ruby-on-rails optimistic-locking
我想我已经淘汰了一切,但我不确定我是否完全理解OL以确定.一般来说,假设你和我在团队中保持最新状态.我在一个房间并决定节省时间我会自己更新foo.所以我开始更新它.一分钟后,您有相同的想法,并登录编辑页面以更新它.如果我先完成会怎么样?如果你先完成会怎么样?在它失败的配置中,它如何区分某人编辑和某人阅读.如果我catch重新加载以更新锁定,我将丢失所有更改,这是如何解决的?在这里,重做更新很简单,但可能它是更复杂的表单对象的一部分.
我的具体问题来自(最好我能说出来)在我的浏览器中加载了一个副本,后来忘记了它,然后我的控制台中的一个(也是锁定:0?)无法更新我的控制台中的陈旧对象错误.注意浏览器的事情.关上我的控制台.试图重新加载我的浏览器并得到陈旧的对象错误.这是失败的代码:
=> 7: self.update_attributes({
8: failed_view_attempts: self.failed_view_attempts += 1,
9: failed_view_at: Time.now
10: })
11: end
(byebug) self
#<Product id: 12... lock_version: 0>
#=> ActiveRecord::StaleObjectError (Attempted to update a stale object: Product.)
Run Code Online (Sandbox Code Playgroud)
我试过的事情:
要查看是否正在加载另一个实例,我puts "CALLED !!!!"在after_initialize回调中添加了它,但它只打印了一次.
并self.changed在从错误中抢救并检索后进行检查["updated_at", "failed_view_attempts", "failed_view_at"]
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |