• O
    Add ActiveRecord::Base#with_lock · 7afbc89c
    Olek Janiszewski 提交于
    Add a `with_lock` method to ActiveRecord objects, which starts
    a transaction, locks the object (pessimistically) and yields to the block.
    The method takes one (optional) parameter and passes it to `lock!`.
    
    Before:
    
        class Order < ActiveRecord::Base
          def cancel!
            transaction do
              lock!
              # ... cancelling logic
            end
          end
        end
    
    After:
    
        class Order < ActiveRecord::Base
          def cancel!
            with_lock do
              # ... cancelling logic
            end
          end
        end
    7afbc89c
locking_test.rb 12.3 KB