1. 23 12月, 2013 1 次提交
  2. 18 12月, 2013 1 次提交
  3. 29 11月, 2013 1 次提交
  4. 29 7月, 2013 1 次提交
  5. 05 7月, 2013 2 次提交
  6. 03 6月, 2013 1 次提交
  7. 07 5月, 2013 1 次提交
    • B
      Confirm a record has not already been destroyed before decrementing · 228720ef
      Ben Tucker 提交于
      counter cache
      
      At present, calling destroy multiple times on the same record results
      in the belongs_to counter cache being decremented multiple times. With
      this change the record is checked for whether it is already destroyed
      prior to decrementing the counter cache.
      228720ef
  8. 08 3月, 2013 1 次提交
  9. 07 3月, 2013 1 次提交
  10. 04 1月, 2013 2 次提交
    • J
      Fix undefined method `to_i' introduced since 3.2.8 · 8d98c83b
      Jason Stirk 提交于
      This commit fixes a bug introduced in 96a13fc7 which breaks behaviour of
      integer fields.
      
      In 3.2.8, setting the value of an integer field to a non-integer (eg.
      Array, Hash, etc.) would default to 1 (true) :
      
          # 3.2.8
          p = Post.new
          p.category_id = [ 1, 2 ]
          p.category_id # => 1
          p.category_id = { 3 => 4 }
          p.category_id # => 1
      
      In 3.2.9 and above, this will raise a NoMethodError :
      
          # 3.2.9
          p = Post.new
          p.category_id = [ 1, 2 ]
      
          NoMethodError: undefined method `to_i' for [1, 2]:Array
      
      Whilst at first blush this appear to be sensible, it combines in bad
      ways with scoping.
      
      For example, it is common to use scopes to control access to data :
      
          @collection = Posts.where(:category_id => [ 1, 2 ])
          @new_post = @collection.new
      
      In 3.2.8, this would work as expected, creating a new Post object
      (albeit with @new_post.category_id = 1). However, in 3.2.9 this will
      cause the NoMethodError to be raised as above.
      
      It is difficult to avoid triggering this error without descoping before
      calling .new, breaking any apps running on 3.2.8 that rely on this
      behaviour.
      
      This patch deviates from 3.2.8 in that it does not retain the somewhat
      spurious behaviour of setting the attribute to 1. Instead, it explicitly
      sets these invalid values to nil :
      
          p = Post.new
          p.category_id = [ 1, 2 ]
          p.category_id # => nil
      
      This also fixes the situation where a scope using an array will
      "pollute" any newly instantiated records.
      
          @new_post = @collection.new
          @new_post.category_id # => nil
      
      Finally, 3.2.8 exhibited a behaviour where setting an object to an
      integer field caused it to be coerced to "1". This has not been
      retained, as it is spurious and surprising in the same way that setting
      Arrays and Heshes was :
      
          c = Category.find(6)
          p = Post.new
      
          # 3.2.8
          p.category_id = c
          p.category_id # => 1
      
          # This patch
          p.category_id = c
          p.category_id # => nil
      
      This commit includes explicit test cases that expose the original issue
      with calling new on a scope that uses an Array. As this is a common
      situation, an explicit test case is the best way to prevent regressions
      in the future.
      
      It also updates and separates existing tests to be explicit about the
      situation that is being tested (eg. AR objects vs. other objects vs.
      non-integers)
      8d98c83b
    • A
  11. 02 1月, 2013 1 次提交
  12. 29 11月, 2012 2 次提交
  13. 11 8月, 2012 1 次提交
    • J
      Use method compilation for association methods · 6e57d5c5
      Jon Leighton 提交于
      Method compilation provides better performance and I think the code
      comes out cleaner as well.
      
      A knock on effect is that methods that get redefined produce warnings. I
      think this is a good thing. I had to deal with a bunch of warnings
      coming from our tests, though.
      6e57d5c5
  14. 28 7月, 2012 1 次提交
  15. 27 7月, 2012 1 次提交
    • J
      ActiveRecord::Base.all returns a Relation. · 6a81ccd6
      Jon Leighton 提交于
      Previously it returned an Array.
      
      If you want an array, call e.g. `Post.to_a` rather than `Post.all`. This
      is more explicit.
      
      In most cases this should not break existing code, since
      Relations use method_missing to delegate unknown methods to #to_a
      anyway.
      6a81ccd6
  16. 25 7月, 2012 1 次提交
  17. 13 7月, 2012 1 次提交
  18. 18 5月, 2012 1 次提交
  19. 27 4月, 2012 4 次提交
  20. 25 4月, 2012 1 次提交
  21. 13 4月, 2012 1 次提交
  22. 04 4月, 2012 1 次提交
  23. 26 9月, 2011 1 次提交
  24. 06 9月, 2011 1 次提交
  25. 12 7月, 2011 1 次提交
  26. 09 7月, 2011 1 次提交
  27. 07 6月, 2011 1 次提交
  28. 05 6月, 2011 1 次提交
    • J
      Refactor Active Record test connection setup. Please see the... · 253bb6b9
      Jon Leighton 提交于
      Refactor Active Record test connection setup. Please see the RUNNING_UNIT_TESTS file for details, but essentially you can now configure things in test/config.yml. You can also run tests directly via the command line, e.g. ruby path/to/test.rb (no rake needed, uses default db connection from test/config.yml). This will help us fix the CI by enabling us to isolate the different Rails versions to different databases.
      253bb6b9
  29. 04 6月, 2011 1 次提交
  30. 21 5月, 2011 1 次提交
  31. 18 5月, 2011 1 次提交
  32. 02 5月, 2011 1 次提交
  33. 01 5月, 2011 1 次提交
  34. 18 2月, 2011 1 次提交