1. 30 1月, 2014 4 次提交
  2. 29 1月, 2014 2 次提交
  3. 28 1月, 2014 1 次提交
  4. 27 1月, 2014 1 次提交
    • W
      Display value when raising due to unscope() issues · 8b14b114
      Washington Luiz 提交于
      Hopefully make it easier to debug errors. e.g
      
      Before:
      
          RuntimeError:
             unscope(where: "deleted_at") failed: unscoping String is unimplemented.
      
      After:
      
          RuntimeError:
             unscope(where: "deleted_at") failed: unscoping String "'t'='t'" is unimplemented.
      8b14b114
  5. 25 1月, 2014 1 次提交
  6. 23 1月, 2014 1 次提交
  7. 22 1月, 2014 10 次提交
  8. 21 1月, 2014 7 次提交
  9. 19 1月, 2014 1 次提交
    • G
      Restore ActiveRecord states after a rollback for models w/o callbacks · 7386ffc7
      Godfrey Chan 提交于
      This fixes a regression (#13744) that was caused by 67d8bb96.
      
      In 67d8bb96, we introduced lazy rollback for records, such that the
      record's internal states and attributes are not restored immediately
      after a transaction rollback, but deferred until they are first
      accessed.
      
      This optimization is only performed when the model does not have any
      transactional callbacks (e.g. `after_commit` and `after_create`).
      
      Unfortunately, the models used to test the affected codepaths all
      comes with some sort of transactional callbacks. Therefore this
      codepath remains largely untested until now and as a result there are
      a few issues in the implementation that remains hidden until now.
      
      First, the `sync_with_transaction_state` (or more accurately,
      `update_attributes_from_transaction_state`) would perform the
      synchronization prematurely before a transaction is finalized (i.e.
      comitted or rolled back). As a result, when the actuall rollback
      happens, the record will incorrectly assumes that its internal states
      match the transaction state, and neglect to perform the restore.
      
      Second, `update_attributes_from_transaction_state` calls `committed!`
      in some cases. This in turns checks for the `destroyed?` state which
      also requires synchronization with the transaction stae, which causes
      an infnite recurrsion.
      
      This fix works by deferring the synchronization until the transaction
      has been finalized (addressing the first point), and also unrolled
      the `committed!` and `rolledback!` logic in-place (addressing the
      second point).
      
      It should be noted that the primary purpose of the `committed!` and
      `rolledback!` methods are to trigger the relevant transactional
      callbacks. Since this code path is only entered when there are no
      transactional callbacks on the model, this shouldn't be necessary. By
      unrolling the method calls, the intention here (to restore the states
      when necessary) becomes more clear.
      7386ffc7
  10. 18 1月, 2014 2 次提交
  11. 17 1月, 2014 1 次提交
  12. 16 1月, 2014 3 次提交
  13. 15 1月, 2014 2 次提交
  14. 14 1月, 2014 4 次提交