Ruby:悲观主义锁(self.lock!)可以使用update_all吗?



我不想使用save!方法,悲观主义者的锁(self.lock!(会使用update_all方法吗?

lock!使用save!方法。

Account.transaction do
self.lock!
account1 = Account.find(...)
account1.balance -= 100
account1.save!
end

lock!使用update_all方法。

Account.transaction do
self.lock!
attributes["balance"] = recalculate_balance
Account.where(:id => self.id).update_all(attributes)
end

Rails::VERSION::STRING => "3.2.22.4"

是的,update_all也会释放锁。

但是:在您提供的代码中,您将锁定事务中的行。它不会释放此锁,因为事务无论如何都会锁定此行。它将与事务提交一起被释放。

相关内容

  • 没有找到相关文章

最新更新