CHANGELOG.md 4.2 KB
Newer Older
1
*   Change how validation error translation strings are fetched: The new behavior
2 3
    will first try the more specific keys, including doing locale fallback, then try
    the less specific ones.
E
eileencodes 已提交
4

5 6
    For example, this is the order in which keys will now be tried for a `blank`
    error on a `product`'s `title` attribute with current locale set to `en-US`:
E
eileencodes 已提交
7

8 9 10
        en-US.activerecord.errors.models.product.attributes.title.blank
        en-US.activerecord.errors.models.product.blank
        en-US.activerecord.errors.messages.blank
E
eileencodes 已提交
11

12 13 14
        en.activerecord.errors.models.product.attributes.title.blank
        en.activerecord.errors.models.product.blank
        en.activerecord.errors.messages.blank
E
eileencodes 已提交
15

16 17
        en-US.errors.attributes.title.blank
        en-US.errors.messages.blank
E
eileencodes 已提交
18

19 20
        en.errors.attributes.title.blank
        en.errors.messages.blank
E
eileencodes 已提交
21

22 23
    *Hugo Vacher*

E
eileencodes 已提交
24

E
eileencodes 已提交
25 26 27 28 29
## Rails 6.0.0.beta3 (March 11, 2019) ##

*   No changes.


30 31
## Rails 6.0.0.beta2 (February 25, 2019) ##

32 33
*   Fix date value when casting a multiparameter date hash to not convert
    from Gregorian date to Julian date.
34 35 36 37 38 39 40 41 42 43 44

    Before:

        Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
        => #<Day id: nil, day: "0001-01-03", created_at: nil, updated_at: nil>

    After:

        Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
        => #<Day id: nil, day: "0001-01-01", created_at: nil, updated_at: nil>

45
    Fixes #28521.
46 47

    *Sayan Chakraborty*
48

49
*   Fix year value when casting a multiparameter time hash.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

    When assigning a hash to a time attribute that's missing a year component
    (e.g. a `time_select` with `:ignore_date` set to `true`) then the year
    defaults to 1970 instead of the expected 2000. This results in the attribute
    changing as a result of the save.

    Before:
    ```
    event = Event.new(start_time: { 4 => 20, 5 => 30 })
    event.start_time # => 1970-01-01 20:30:00 UTC
    event.save
    event.reload
    event.start_time # => 2000-01-01 20:30:00 UTC
    ```

    After:
    ```
    event = Event.new(start_time: { 4 => 20, 5 => 30 })
    event.start_time # => 2000-01-01 20:30:00 UTC
    event.save
    event.reload
    event.start_time # => 2000-01-01 20:30:00 UTC
    ```

    *Andrew White*


77 78
## Rails 6.0.0.beta1 (January 18, 2019) ##

B
bogdanvlviv 已提交
79 80 81 82
*   Add `ActiveModel::Errors#of_kind?`.

    *bogdanvlviv*, *Rafael Mendonça França*

83 84 85 86 87
*   Fix numericality equality validation of `BigDecimal` and `Float`
    by casting to `BigDecimal` on both ends of the validation.

    *Gannon McGibbon*

88 89 90 91
*   Add `#slice!` method to `ActiveModel::Errors`.

    *Daniel López Prat*

92 93 94 95 96 97
*   Fix numericality validator to still use value before type cast except Active Record.

    Fixes #33651, #33686.

    *Ryuta Kamizono*

98 99
*   Fix `ActiveModel::Serializers::JSON#as_json` method for timestamps.

R
Ryuta Kamizono 已提交
100 101 102 103 104 105 106 107 108 109 110
    Before:
    ```
    contact = Contact.new(created_at: Time.utc(2006, 8, 1))
    contact.as_json["created_at"] # => 2006-08-01 00:00:00 UTC
    ```

    After:
    ```
    contact = Contact.new(created_at: Time.utc(2006, 8, 1))
    contact.as_json["created_at"] # => "2006-08-01T00:00:00.000Z"
    ```
111 112 113

    *Bogdan Gusiev*

114 115
*   Allows configurable attribute name for `#has_secure_password`. This
    still defaults to an attribute named 'password', causing no breaking
116
    change. There is a new method `#authenticate_XXX` where XXX is the
117
    configured attribute name, making the existing `#authenticate` now an
118
    alias for this when the attribute is the default 'password'.
R
Ryuta Kamizono 已提交
119

120
    Example:
121

122
        class User < ActiveRecord::Base
123
          has_secure_password :recovery_password, validations: false
124
        end
125

126
        user = User.new()
127 128 129
        user.recovery_password = "42password"
        user.recovery_password_digest # => "$2a$04$iOfhwahFymCs5weB3BNH/uX..."
        user.authenticate_recovery_password('42password') # => user
130

R
Ryuta Kamizono 已提交
131
    *Unathi Chonco*
132

B
bogdanvlviv 已提交
133 134 135 136 137 138
*   Add `config.active_model.i18n_full_message` in order to control whether
    the `full_message` error format can be overridden at the attribute or model
    level in the locale files. This is `false` by default.

    *Martin Larochelle*

K
Kasper Timm Hansen 已提交
139
*   Rails 6 requires Ruby 2.5.0 or newer.
J
Jeremy Daer 已提交
140

K
Kasper Timm Hansen 已提交
141
    *Jeremy Daer*, *Kasper Timm Hansen*
142 143


144
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activemodel/CHANGELOG.md) for previous changes.