表題の通り
u = User.last
u.updated_at = nil #=> (1)
u.with_lock do
u.updated_at #=> (1) では無くDBの値になる
end
該当するRailsのソースはここ
pessimistic.rb
module ActiveRecord
module Locking
module Pessimistic
def lock!(lock = true)
reload(:lock => lock) if persisted?
self
end
def with_lock(lock = true)
transaction do
lock!(lock)
yield
end
end
end
end
end