1

increment_counter是否间接操纵lock_version

我正在测试并发性,我注意到lock_version它正在增加。即使,我不是从ActiveRecord::StaleObjectError.

http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html

"Active Records support optimistic locking if the field lock_version is present." 

这是否意味着自动increment_counter触发救援ActiveRecord::StaleObjectError

4

1 回答 1

2

更新记录时,字段 lock_version 总是在保存时递增。假设您有一条 lock_version 为 3 的记录。当您保存它时,它会尝试执行以下操作:

UPDATE some_table SET foo = "bar", lock_version = 4 WHERE id = some_id AND lock_version = 3

如果更新的行数为零,则抛出 ActiveRecord::StaleObjectError。本质上,如果更新的行数为零,则意味着另一个请求已经更新了记录。由于这个原因,lock_version 总是递增。

于 2012-08-30T01:04:23.510 回答