我目前正在研究rails API。我需要能夠從表中鎖定單個行,因此在更新之前它不能是讀取。我必須這樣做,因此程序不會檢索當前用於進行一些計算的信息,從而產生不正確的結果。一行可以鎖定,因此無法讀取[使用Rails/Postgres]?
據我所知,ActiveRecord提供了使用Postgres或MySQL實現鎖的方法。甚至有一種方法可以鎖定整個表供讀取,但我一直無法找到任何有關阻止單行行可讀性的內容。
有人建議我給我的模型添加一個標誌,這樣一旦它被訪問,它立即更新記錄的列到in_use = true
。當下一個檢索特定模型實例的查詢運行時,它必須檢查該標記是否爲假。我唯一的擔心是,在提交記錄之前有一小段時間可能導致讀取正在使用的行。還有其他建議嗎?
看看鐵軌中的悲觀鎖定。 http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html是否做你想做的事? – Doon
Rails 4支持標準的SQL事務隔離級別。 –