1. 16 9月, 2015 1 次提交
  2. 04 5月, 2015 1 次提交
  3. 06 3月, 2015 1 次提交
  4. 04 3月, 2015 2 次提交
  5. 04 2月, 2015 1 次提交
    • S
      rm `Column#cast_type` · 158c7eb1
      Sean Griffin 提交于
      The type from the column is never used, except when being passed to the
      attributes API. While leaving the type on the column wasn't necessarily
      a bad thing, I worry that it's existence there implies that it is
      something which should be used.
      
      During the design and implementation process of the attributes API,
      there have been plenty of cases where getting the "right" type object
      was hard, but I had easy access to the column objects. For any
      contributor who isn't intimately familiar with the intents behind the
      type casting system, grabbing the type from the column might easily seem
      like the "correct" thing to do.
      
      As such, the goal of this change is to express that the column is not
      something that should be used for type casting. The only places that are
      "valid" (at the time of this commit) uses of acquiring a type object
      from the column are fixtures (as the YAML file is going to mirror the
      database more closely than the AR object), and looking up the type
      during schema detection to pass to the attributes API
      
      Many of the failing tests were removed, as they've been made obsolete
      over the last year. All of the PG column tests were testing nothing
      beyond polymorphism. The Mysql2 tests were duplicating the mysql tests,
      since they now share a column class.
      
      The implementation is a little hairy, and slightly verbose, but it felt
      preferable to going back to 20 constructor options for the columns. If
      you are git blaming to figure out wtf I was thinking with them, and have
      a better idea, go for it. Just don't use a type object for this.
      158c7eb1
  6. 03 2月, 2015 1 次提交
  7. 31 1月, 2015 1 次提交
  8. 04 1月, 2015 3 次提交
  9. 27 12月, 2014 1 次提交
  10. 29 10月, 2014 3 次提交
  11. 05 8月, 2014 1 次提交
  12. 23 6月, 2014 1 次提交
  13. 18 6月, 2014 1 次提交
    • S
      Don't type cast the default on the column · 4d3e88fc
      Sean Griffin 提交于
      If we want to have type decorators mess with the attribute, but not the
      column, we need to stop type casting on the column. Where possible, we
      changed the tests to test the value of `column_defaults`, which is
      public API. `Column#default` is not.
      4d3e88fc
  14. 14 6月, 2014 1 次提交
  15. 11 6月, 2014 1 次提交
  16. 10 6月, 2014 3 次提交
    • S
      Keep the types of virtual columns after yaml serialization · 47f1c10c
      Sean Griffin 提交于
      On MySQL and PostgreSQL, the adapter does not type cast virtual columns
      for us.
      47f1c10c
    • S
      Rename `type_cast` to `type_cast_from_database` · d24e6407
      Sean Griffin 提交于
      In some cases there is a difference between the two, we should always
      be doing one or the other. For convenience, `type_cast` is still a
      private method on type, so new types that do not need different behavior
      don't need to implement two methods, but it has been moved to private so
      it cannot be used accidentally.
      d24e6407
    • S
      Make `_before_type_cast` actually be before type cast · c93dbfef
      Sean Griffin 提交于
      - The following is now true for all types, all the time
        - `model.attribute_before_type_cast == given_value`
        - `model.attribute == model.save_and_reload.attribute`
        - `model.attribute == model.dup.attribute`
        - `model.attribute == YAML.load(YAML.dump(model)).attribute`
      - Removes the remaining types implementing `type_cast_for_write`
      - Simplifies the implementation of time zone aware attributes
      - Brings tz aware attributes closer to being implemented as an attribute
        decorator
      - Adds additional point of control for custom types
      c93dbfef
  17. 07 6月, 2014 1 次提交
  18. 05 6月, 2014 1 次提交
  19. 04 6月, 2014 1 次提交
    • S
      Keep column defaults in type cast form · ed559d4b
      Sean Griffin 提交于
      The contract of `_field_changed?` assumes that the old value is always
      type cast. That is not the case for the value in `Column#default` as
      things are today. It appears there are other public methods that
      assume that `Column#default` is type cast, as well. The reason for this
      change originally was because the value gets put into `@raw_attributes`
      in initialize. This reverts to the old behavior on `Column`, and updates
      `initialize` to make sure that the values are in the right format.
      ed559d4b
  20. 03 6月, 2014 1 次提交
  21. 02 6月, 2014 1 次提交
    • S
      Remove most code related to serialized properties · 90c8be76
      Sean Griffin 提交于
      Nearly completely implemented in terms of custom properties.
      `_before_type_cast` now stores the raw serialized string consistently,
      which removes the need to keep track of "state". The following is now
      consistently true:
      
      - `model.serialized == model.reload.serialized`
      - A model can be dumped and loaded infinitely without changing
      - A model can be saved and reloaded infinitely without changing
      90c8be76
  22. 30 5月, 2014 3 次提交
  23. 28 5月, 2014 1 次提交
    • S
      Remove unused `Column#coder` · 748f0708
      Sean Griffin 提交于
      It appears this property was added, but never actually used. It would be
      broken if it were, as it only type casts one way.
      748f0708
  24. 26 5月, 2014 1 次提交
  25. 24 5月, 2014 1 次提交
    • S
      Remove `Column#primary` · 05dd3df3
      Sean Griffin 提交于
      It appears to have been used at some point in the past, but is no longer
      used in any meaningful way. Whether a column is considered primary is
      a property of the model, not the schema/column. This also removes the
      need for yet another layer of caching of the model's schema, and we can
      leave that to the schema cache.
      05dd3df3
  26. 23 5月, 2014 4 次提交
  27. 21 5月, 2014 2 次提交