1. 28 2月, 2017 2 次提交
    • E
      Dupping a CollectionProxy should dup the load_target · ca8c21df
      eileencodes 提交于
      In Rails 3.2 dupping a `CollectionProxy` would dup it's `load_target` as
      well. That functionality has been broken since the release of Rails 4.0.
      I hit this in an application upgrade and wondered why duplicating a
      CollectionProxy and assigning it to a variable stopped working.
      
      When calling `dup` on a `CollectionProxy` only the owner (ex.
      topic) was getting duplicated and the `load_target` would remain in tact
      with it's original object ID. Dupping the `load_target` is useful for performing
      a logging operation after records have been destroyed in a method.
      
      For example:
      
      ```
      def transfer_operation
        saved_replies = topic.replies
      
        topic.replies.clear
      
        saved_replies.each do |reply|
          user.update_replies_count!
        end
      end
      ```
      
      This change adds a `initialize_dup` method that performs a `deep_dup` on
      the `@associatiation` so that the `load_target` is dupped as well.
      
      Fixes #17117
      ca8c21df
    • Y
      Oracle database also does not allow aliases in the having clause · 615f96dd
      Yasuo Honda 提交于
      Follow up #28183
      615f96dd
  2. 27 2月, 2017 5 次提交
  3. 26 2月, 2017 11 次提交
  4. 25 2月, 2017 2 次提交
  5. 24 2月, 2017 6 次提交
  6. 23 2月, 2017 1 次提交
    • R
      Correctly dump native timestamp types for MySQL · 50552633
      Ryuta Kamizono 提交于
      The native timestamp type in MySQL is different from datetime type.
      Internal representation of the timestamp type is UNIX time, This means
      that timestamp columns are affected by time zone.
      
      ```
      > SET time_zone = '+00:00';
      Query OK, 0 rows affected (0.00 sec)
      
      > INSERT INTO time_with_zone(ts,dt) VALUES (NOW(),NOW());
      Query OK, 1 row affected (0.02 sec)
      
      > SELECT * FROM time_with_zone;
      +---------------------+---------------------+
      | ts                  | dt                  |
      +---------------------+---------------------+
      | 2016-02-07 22:11:44 | 2016-02-07 22:11:44 |
      +---------------------+---------------------+
      1 row in set (0.00 sec)
      
      > SET time_zone = '-08:00';
      Query OK, 0 rows affected (0.00 sec)
      
      > SELECT * FROM time_with_zone;
      +---------------------+---------------------+
      | ts                  | dt                  |
      +---------------------+---------------------+
      | 2016-02-07 14:11:44 | 2016-02-07 22:11:44 |
      +---------------------+---------------------+
      1 row in set (0.00 sec)
      ```
      50552633
  7. 22 2月, 2017 3 次提交
  8. 21 2月, 2017 4 次提交
    • P
      Fix `define_attribute_method` with Symbol in AR · 0b157f8d
      Prem Sichanugrist 提交于
      This issue is only appear when you try to call `define_attribute_method`
      and passing a symbol in Active Record. It does not appear in isolation
      in Active Model itself.
      
      Before this patch, when you run `User.define_attribute_method :foo`, you
      will get:
      
          NoMethodError: undefined method `unpack' for :foo:Symbol
              from activerecord/lib/active_record/attribute_methods/read.rb:28:in `define_method_attribute'
              from activerecord/lib/active_record/attribute_methods/primary_key.rb:61:in `define_method_attribute'
              from activemodel/lib/active_model/attribute_methods.rb:292:in `block in define_attribute_method'
              from activemodel/lib/active_model/attribute_methods.rb:285:in `each'
              from activemodel/lib/active_model/attribute_methods.rb:285:in `define_attribute_method'
      
      This patch contains both a fix in Active Model and a test in Active
      Record for this error.
      0b157f8d
    • E
      Ensure test threads share a DB connection · d6466beb
      eileencodes 提交于
      This ensures multiple threads inside a transactional test to see consistent
      database state.
      
      When a system test starts Puma spins up one thread and Capybara spins up
      another thread. Because of this when tests are run the database cannot
      see what was inserted into the database on teardown. This is because
      there are two threads using two different connections.
      
      This change uses the statement cache to lock the threads to using a
      single connection ID instead of each not being able to see each other.
      This code only runs in the fixture setup and teardown so it does not
      affect real production databases.
      
      When a transaction is opened we set `lock_thread` to `Thread.current` so
      we can keep track of which connection the thread is using. When we
      rollback the transaction we unlock the thread and then there will be no
      left-over data in the database because the transaction will roll back
      the correct connections.
      
      [ Eileen M. Uchitelle, Matthew Draper ]
      d6466beb
    • K
      Revert "Merge pull request #27925 from robin850/hwia-removal" · 507c9970
      Kasper Timm Hansen 提交于
      Pointed out by @matthewd that the HWIA subclass changes the
      AS scoped class and top-level HWIA hierarchies out from under
      existing classes.
      
      This reverts commit 71da3909, reversing
      changes made to 41c33bd4.
      507c9970
    • R
      38c4ff37
  9. 20 2月, 2017 1 次提交
  10. 19 2月, 2017 1 次提交
  11. 17 2月, 2017 1 次提交
  12. 16 2月, 2017 1 次提交
  13. 14 2月, 2017 2 次提交