夥計們,交易中的ActiveRecord
我是相當新的在軌的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調用和檢查)中遇到異常,那麼我希望specimen.state回滾到之前的值。我想知道這是否會像上面那樣工作?另外,它看起來像在我的開發機器上,鎖在整個Specimen表上設置,當我嘗試查詢該表/模型時,我得到一個BUSY異常(我正在使用SQLLite)。我在想鎖只能在那個對象/記錄上設置。
任何反饋都非常感謝,因爲我說我真的是新來的,所以我的問題可能是非常天真的。
謝謝。這很有幫助,我不能投票,它說我需要15個聲望。 – user1781472 2013-02-28 21:28:42