1. 22 11月, 2012 7 次提交
    • Y
      prevent mass assignment of polymorphic type when using `build` · 053bfa23
      Yves Senn 提交于
      Closes #8265
      053bfa23
    • C
      Remove the #sum method from CollectionAssociation · fd1c4576
      Carlos Antonio da Silva 提交于
      Since edd94cee, CollectionProxy
      delegates all calculation methods - except count - to the scope,
      which does basically what this method was doing, but since we're
      delegating from the proxy, the association method was never called.
      fd1c4576
    • C
      Deprecate Relation#sum with a block. · ad9983f6
      Carlos Antonio da Silva 提交于
      To perform a sum calculation over the array of elements, use to_a.sum(&block).
      
      Please check the discussion in f9cb645d
      for more context.
      ad9983f6
    • C
      Revert "Yield only one argument instead of splatting." · 76a6bfd6
      Carlos Antonio da Silva 提交于
      This reverts commit f9cb645d.
      
      Conflicts:
      	activerecord/CHANGELOG.md
      
      Revert "Allow blocks for count with ActiveRecord::Relation. Document and test that sum allows blocks"
      
      This reverts commit 9cc2bf69.
      
      Conflicts:
      	activerecord/lib/active_record/relation/calculations.rb
      76a6bfd6
    • J
      Don't allocate new strings in compiled attribute methods · ae934aef
      Jon Leighton 提交于
      This improves memory and performance without having to use symbols which
      present DoS problems. Thanks @headius and @tenderlove for the
      suggestion.
      
      This was originally committed in
      f1765019, and then reverted in
      d3494903 due to it causing problems in a
      real application. This second attempt should solve that.
      
      Benchmark
      ---------
      
      require 'active_record'
      require 'benchmark/ips'
      
      ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
      
      class Post < ActiveRecord::Base
        connection.create_table :posts, force: true do |t|
          t.string :name
        end
      end
      
      post = Post.create name: 'omg'
      
      Benchmark.ips do |r|
        r.report('Post.new')          { Post.new name: 'omg' }
        r.report('post.name')         { post.name }
        r.report('post.name=')        { post.name = 'omg' }
        r.report('Post.find(1).name') { Post.find(1).name }
      end
      
      Before
      ------
      
      Calculating -------------------------------------
                  Post.new      1419 i/100ms
                 post.name      7538 i/100ms
                post.name=      3024 i/100ms
         Post.find(1).name       243 i/100ms
      -------------------------------------------------
                  Post.new    20637.6 (±12.7%) i/s -     102168 in   5.039578s
                 post.name  1167897.7 (±18.2%) i/s -    5186144 in   4.983077s
                post.name=    64305.6 (±9.6%) i/s -     317520 in   4.998720s
         Post.find(1).name     2678.8 (±10.8%) i/s -      13365 in   5.051265s
      
      After
      -----
      
      Calculating -------------------------------------
                  Post.new      1431 i/100ms
                 post.name      7790 i/100ms
                post.name=      3181 i/100ms
         Post.find(1).name       245 i/100ms
      -------------------------------------------------
                  Post.new    21308.8 (±12.2%) i/s -     105894 in   5.053879s
                 post.name  1534103.8 (±2.1%) i/s -    7634200 in   4.979405s
                post.name=    67441.0 (±7.5%) i/s -     337186 in   5.037871s
         Post.find(1).name     2681.9 (±10.6%) i/s -      13475 in   5.084511s
      ae934aef
    • S
      Coerce strings in create_join_table. · 48a03571
      Steve Klabnik 提交于
      If you accidentally pass a string and a symbol, this breaks. So
      we coerce them both to strings.
      
      Fixes #7715
      48a03571
    • C
      Typo · 104f4fde
      Chris Patuzzo 提交于
      104f4fde
  2. 21 11月, 2012 3 次提交
  3. 20 11月, 2012 2 次提交
  4. 19 11月, 2012 2 次提交
  5. 18 11月, 2012 2 次提交
  6. 17 11月, 2012 3 次提交
  7. 16 11月, 2012 4 次提交
  8. 13 11月, 2012 1 次提交
  9. 12 11月, 2012 2 次提交
  10. 11 11月, 2012 1 次提交
    • J
      Make ActiveRecord::Delegation#method_missing threadsafe · 12d6d3a6
      Jon Leighton 提交于
      Two threads may be in method_missing at the same time. If so, they might
      both try to define the same delegator method.
      
      Such a situation probably wouldn't result in a particularly spectacular
      bug as one method would probably just be overridden by an identical
      method, but it could cause warnings to pop up. (It could be worse if
      method definition is non-atomic in a particular implementation.)
      
      (We will also need this mutex shortly anyway, see #8127.)
      12d6d3a6
  11. 10 11月, 2012 3 次提交
  12. 09 11月, 2012 9 次提交
  13. 08 11月, 2012 1 次提交