What about invert the conditional to avoid the short-circuit return?

```ruby
if transaction_state || _rollback_callbacks.empty? || _commit_callbacks.empty? || _create_callbacks.empty?
  unless @reflects_state[depth]
    if transaction_state.committed?
      committed!
    elsif transaction_state.rolledback?
      rolledback!
    end

    @reflects_state[depth] = true
  end

  if transaction_state.parent && !@reflects_state[depth + 1]
    update_attributes_from_transaction_state(transaction_state.parent, depth+1)
  end
end
```