在ActiveRecord
事务中,我需要一些方法来锁定记录/表以供读取,因此在执行事务时,用户无法从该表中进行选择。
基本上,我需要这样的东西
System.transaction do
s = System.first
# Something to lock the table or selected record for reading
s.update_attributes(some_params)
end
有没有人知道如何做到这一点?
答案 0 :(得分:1)
看来你正在寻找Pessimistic Locking。您可以像范围一样使用lock
方法。此外,您应该使用bang-version update_attributes!
以便在出现问题时引发异常。
System.transaction do
s = System.lock.first
s.update_attributes!(some_params)
end