1. 03 5月, 2017 1 次提交
  2. 12 9月, 2016 1 次提交
  3. 07 8月, 2016 1 次提交
  4. 31 7月, 2016 1 次提交
  5. 24 6月, 2016 1 次提交
  6. 23 1月, 2016 1 次提交
    • S
      Use the database type to deserialize enum · 67c17190
      Sean Griffin 提交于
      This fixes incorrect assumptions made by e991c7b8 that we can assume the
      DB is already casting the value for us. The enum type needs additional
      information to perform casting, and needs a subtype.
      
      I've opted not to call `super` in `cast`, as we have a known set of
      types which we accept there, and the subtype likely doesn't accept them
      (symbol -> integer doesn't make sense)
      
      Close #23190
      67c17190
  7. 13 8月, 2015 1 次提交
  8. 03 7月, 2015 1 次提交
    • E
      Use default model enum in fixtures if not defined · eff3a317
      eileencodes 提交于
      After 908cfef6 was introduced fixtures that did not set an enum would
      return nil instead of the default enum value.
      
      The fixtures should assume the default if a different enum is not
      defined.
      
      The change checks first if the enum is defined in the fixture before
      setting it based on the fixture.
      eff3a317
  9. 12 6月, 2015 1 次提交
  10. 28 5月, 2015 1 次提交
    • G
      Resolve enums in test fixtures · 908cfef6
      George Claghorn 提交于
      Currently, values for columns backing Active Record enums must be
      specified as integers in test fixtures:
      
          awdr:
            title: "Agile Web Development with Rails"
            status: 2
      
          rfr:
            title: "Ruby for Rails"
            status: <%= Book.statuses[:proposed] %>
      
      This is potentially confusing, since enum values are typically
      specified as symbols or strings in application code. To resolve the
      confusion, this change permits the use of symbols or strings to specify
      enum values:
      
          awdr:
            status: :published
      
      It is compatible with fixtures that specify enum values as integers.
      908cfef6
  11. 05 3月, 2015 1 次提交
  12. 21 2月, 2015 1 次提交
    • F
      Error message testing fix · b1d26350
      Franky W 提交于
      The testing of error messages have been implemented wrongly a few times.
      This is an attempt to fix it.
      
      For example, some of these test should have failed with the new code.
      The reason they are not failling with the new string is the fact they
      were not being tested beforehand.
      b1d26350
  13. 14 2月, 2015 6 次提交
  14. 12 2月, 2015 1 次提交
    • S
      Refactor enum to be defined in terms of the attributes API · c51f9b61
      Sean Griffin 提交于
      In addition to cleaning up the implementation, this allows type casting
      behavior to be applied consistently everywhere. (#where for example). A
      good example of this was the previous need for handling value to key
      conversion in the setter, because the number had to be passed to `where`
      directly. This is no longer required, since we can just pass the string
      along to where. (It's left around for backwards compat)
      
      Fixes #18387
      c51f9b61
  15. 04 9月, 2014 1 次提交
    • G
      Enums shouldn't ruin people's anniversaries · 94b7328b
      Godfrey Chan 提交于
      Added a few more methods on Module/Class to the dangerous class methods
      blacklist. (Technically, allocate and new are already protected currently because
      we happen to redefine them in the current implantation.)
      
      Closes #16792
      94b7328b
  16. 08 4月, 2014 1 次提交
    • G
      Follow up to bbe7fe41 to fix enum leakage across classes. · a5664fe2
      Godfrey Chan 提交于
      The original attempt didn't really fix the problem and wasn't testing the
      problematic area. This commit corrected those issues in the original commit.
      
      Also removed the private `enum_mapping_for` method. As `defined_enums` is now a
      method, this method doesn't provide much value anymore.
      a5664fe2
  17. 07 4月, 2014 1 次提交
  18. 04 4月, 2014 1 次提交
  19. 28 2月, 2014 1 次提交
    • T
      Fix a bug affecting validations of enum attributes · 6e53d924
      TheMonster 提交于
      This fixes a bug where any enum attribute of a model
      would be evaluated always as 0 when calling the
      database on validations.
      
      This fix converts the value of the enum attribute
      to its integer value rather than the string before
      building the relation as the bug occured when the
      string finally gets converted to integer using
      string.to_i which converts it to 0.
      
      [Vilius Luneckas, Ahmed AbouElhamayed]
      6e53d924
  20. 31 1月, 2014 1 次提交
  21. 30 1月, 2014 1 次提交
    • G
      `enum` now raises on "dangerous" name conflicts · 40f0257e
      Godfrey Chan 提交于
      Dangerous name conflicts includes instance or class method conflicts
      with methods defined within `ActiveRecord::Base` but not its ancestors,
      as well as conflicts with methods generated by other enums on the same
      class.
      
      Fixes #13389.
      40f0257e
  22. 24 1月, 2014 1 次提交
  23. 21 1月, 2014 2 次提交
  24. 14 1月, 2014 1 次提交
  25. 11 1月, 2014 1 次提交
    • Y
      use enum labels as form values. Achieved by `_before_type_cast`. · 792c66f8
      Yves Senn 提交于
      Closes #13650, #13672
      
      This is an alternate implementation to solve #13650. Currently form fields
      contain the enum value (eg. "1"). This breaks because the setter `enum=`
      expects the label (eg. "active").
      
      ActiveRecord::Enum allows you to use labels in your application but store numbers.
      We should make sure that all parts after AR are dealing with labels and not the
      underlying mapping to a number.
      
      This patch defines `_before_type_cast` on every enum column to return the label.
      This method is later used to fetch the value to display in form fields.
      
      I deliberately copied the implementation of the enum getter instead of delegating to it.
      This allows you to overwrite the getter and for example return a `Value Object` but have it
      still work for form fields.
      792c66f8
  26. 04 1月, 2014 1 次提交
    • G
      Building new records with enum scopes now works as expected · 788bb40e
      Godfrey Chan 提交于
      Previously, this would give an `ArgumentError`:
      
         class Issue < ActiveRecord::Base
           enum :status, [:open, :finished]
         end
      
         Issue.open.build # => ArgumentError: '0' is not a valid status
         Issue.open.create # => ArgumentError: '0' is not a valid status
      
      PR #13542 muted the error, but the issue remains. This commit fixes
      the issue by allowing the enum value to be written directly via the
      setter:
      
         Issue.new.status = 0 # This now sets status to :open
      
      Assigning a value directly via the setter like this is not part of the
      documented public API, so users should not rely on this behavior.
      
      Closes #13530.
      788bb40e
  27. 02 1月, 2014 1 次提交
    • R
      Fix the enums writer methods · 7aebcb67
      Robin Dupret 提交于
      Previously, the writer methods would simply check whether the passed
      argument was the symbol representing the integer value of an enum field.
      Therefore, it was not possible to specify the numeric value itself but
      the dynamically defined scopes generate where clauses relying on this
      kind of values so a chained call to a method like `find_or_initialize_by`
      would trigger an `ArgumentError`.
      
      Reference #13530
      7aebcb67
  28. 01 1月, 2014 1 次提交
  29. 06 11月, 2013 3 次提交
  30. 05 11月, 2013 3 次提交