1. 21 5月, 2014 5 次提交
  2. 20 5月, 2014 2 次提交
    • S
      Delegate type_cast to injected type object in mysql · ac371655
      Sean Griffin 提交于
      ac371655
    • S
      Remove :timestamp column type · d0f8c46e
      Sean Griffin 提交于
      The `:timestamp` type for columns is unused. All database adapters treat
      them as the same database type. All code in `ActiveRecord` which changes
      its behavior based on the column's type acts the same in both cases.
      However, when the type is passed to code that checks for the `:datetime`
      type, but not `:timestamp` (such as XML serialization), the result is
      unexpected behavior.
      
      Existing schema definitions will continue to work, and the `timestamp`
      type is transparently aliased to `datetime`.
      d0f8c46e
  3. 19 5月, 2014 1 次提交
    • S
      Delegate `Column#type` to the injected type object · 0b682e4b
      Sean Griffin 提交于
      The decision to wrap type registrations in a proc was made for two
      reasons.
      
      1. Some cases need to make an additional decision based on the type
        (e.g. a `Decimal` with a 0 scale)
      2. Aliased types are automatically updated if they type they point to is
        updated later. If a user or another adapter decides to change the
        object used for `decimal` columns, `numeric`, and `number` will
        automatically point to the new type, without having to track what
        types are aliased explicitly.
      
      Everything else here should be pretty straightforward. PostgreSQL ranges
      had to change slightly, since the `simplified_type` method is gone.
      0b682e4b
  4. 18 5月, 2014 1 次提交
    • S
      Add a type object to Column constructor · 4bd5dffc
      Sean Griffin 提交于
      Part of #15134. In order to perform typecasting polymorphically, we need
      to add another argument to the constructor. The order was chosen to
      match the `oid_type` on `PostgreSQLColumn`.
      4bd5dffc
  5. 08 5月, 2014 1 次提交
  6. 23 2月, 2014 1 次提交
  7. 14 10月, 2013 1 次提交
  8. 24 9月, 2013 1 次提交
  9. 17 8月, 2013 1 次提交
  10. 09 8月, 2013 1 次提交
  11. 02 7月, 2013 1 次提交
  12. 03 4月, 2013 1 次提交
  13. 19 3月, 2013 2 次提交
  14. 14 2月, 2013 1 次提交
  15. 23 1月, 2013 1 次提交
  16. 07 1月, 2013 1 次提交
    • T
      Fix error when assigning NaN to an integer column · 807e176a
      Tristan Harward 提交于
      Also covers any non-castable case by returning nil, which
      is in-line with the intention of the former implementation,
      but covers the odd cases which respond to to_i but raise
      an error when it's called, such as NaN, Infinity and -Infinity.
      
      Fixes #8757
      807e176a
  17. 04 1月, 2013 1 次提交
    • 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
  18. 16 12月, 2012 1 次提交
  19. 11 12月, 2012 1 次提交
    • A
      Deprecate obsolete Time to DateTime fallback methods · 48583f8b
      Andrew White 提交于
      The Time.time_with_datetime_fallback, Time.utc_time and Time.local_time
      methods were added to handle the limitations of Ruby's native Time
      implementation. Those limitations no longer apply so we are deprecating
      them in 4.0 and they will be removed in 4.1.
      48583f8b
  20. 30 10月, 2012 2 次提交
  21. 29 10月, 2012 1 次提交
  22. 19 10月, 2012 1 次提交
  23. 29 9月, 2012 1 次提交
    • J
      Support for partial inserts. · 144e8691
      Jon Leighton 提交于
      When inserting new records, only the fields which have been changed
      from the defaults will actually be included in the INSERT statement.
      The other fields will be populated by the database.
      
      This is more efficient, and also means that it will be safe to
      remove database columns without getting subsequent errors in running
      app processes (so long as the code in those processes doesn't
      contain any references to the removed column).
      144e8691
  24. 13 9月, 2012 1 次提交
  25. 06 9月, 2012 1 次提交
  26. 05 9月, 2012 1 次提交
    • A
      Fix for time type columns with invalid time · ce7cdb90
      Adam Meehan 提交于
      The string_to_dummy_time method was blindly parsing the dummy time string
      with Date._parse which returns a hash for the date part regardless
      of whether the time part is an invalid time string.
      ce7cdb90
  27. 16 8月, 2012 1 次提交
    • A
      Fix occasional microsecond conversion inaccuracy · 53ca22f2
      Ari Pollak 提交于
      ActiveRecord::ConnectionAdapters::Column#microseconds did an unnecessary
      conversion to from Rational to float when calculating the integer number
      of microseconds. Some terminating decimal numbers in base10 are
      repeating decimal numbers in base2 (the format of float), and
      occasionally this causes a rounding error.
      Patch & explanation originally from Logan Bowers.
      53ca22f2
  28. 03 8月, 2012 1 次提交
  29. 07 5月, 2012 1 次提交
  30. 06 5月, 2012 1 次提交
  31. 01 5月, 2012 1 次提交
  32. 30 3月, 2012 1 次提交
  33. 11 2月, 2012 1 次提交