如果发生update_all,如何处理乐观锁定?

时间:2018-09-30 18:50:04

标签: ruby-on-rails ruby ruby-on-rails-3 race-condition optimistic-locking

我正在尝试对比赛条件实施乐观锁定。为此,我在“产品:通过迁移进行建模”中添加了额外的列lock_version

产品:型号的新字段:

#  lock_version                       :integer(4)      default(0), not null

当我尝试save!时,乐观锁定正在起作用。记录,updatedat和lock_version正在更新。

但是,在现有的源代码中,我们使用的是updated_all,它不会更新updated_atlock_version。因此,乐观锁定不起作用。请提出建议,如何对updated_all

实施乐观
Product.where(:id => self.id).update_all(attributes)
      self.attributes = attributes

1 个答案:

答案 0 :(得分:0)

我们可以简单地这样做。(如果不需要回调。)

schedule.every(1).minutes.do(self.local,script_path)

这将查找具有匹配lock_version的记录并更新lock_version。