伙计们,
我对 rails 中的 activerecord 中的事务相当陌生,并且我有一段代码,我在其中执行以下操作:
transaction do
specimen = Specimen.find_by_doc_id(25)
specimen.state = "checking"
specimen.save
result = Inventory.do_check(specimen)
if result
specimen.state="PASS"
else
specimen.state="FAIL"
end
specimen.save
end
我在这里使用事务的目标是,如果我在 Inventory.do_check 中遇到异常(它是外部 Web 服务的客户端并执行大量 HTTP 调用和检查),那么我希望 sample.state 回滚到其先前的值. 我想知道这是否会像上面那样工作?此外,看起来在我的开发机器上,锁定是在整个 Specimen 表上设置的,当我尝试查询该表/模型时,我得到一个 BUSY 异常(我正在使用 SQLLite)。我在想应该只在那个对象/记录上设置锁。
非常感谢任何反馈,因为我说我对此很陌生,所以我的问题可能非常幼稚。