1

간접적으로 조작하는 increment_counterlock_version입니까?increment_counter가 lock_version을 간접적으로 조작합니까?

동시성에 대해 테스트 중이며 lock_version이 증가하는 것으로 나타났습니다. 그래도 나는 ActiveRecord::StaleObjectError에서 구하고 있지 않습니다.

http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html

"Active Records support optimistic locking if the field lock_version is present." 

이이 increment_counter 자동 ActiveRecord::StaleObjectError에 구조를 트리거링 뜻 말한다?

답변

2

필드 lock_version은 레코드를 업데이트 할 때 항상 저장시 증가합니다. 액티브 :: StaleObjectError가 슬로우됩니다

UPDATE some_table SET foo = "bar", lock_version = 4 WHERE id = some_id AND lock_version = 3 

갱신 된 행의 크기가 0 인 경우 : 당신이 그것을 저장하면 다음과 같이 무언가를 시도 할 것이다 당신이 3의 lock_version와 기록이 말해. 기본적으로 업데이트 된 행이 0 인 경우 다른 요청이 이미 레코드를 업데이트했다는 의미입니다. 이런 이유로 lock_version은 항상 증가합니다.