CHANGELOG.md 4.4 KB
Newer Older
1 2
## Rails 6.0.0.rc1 (April 24, 2019) ##

3 4 5 6 7 8
*   Type cast falsy boolean symbols on boolean attribute as false.

    Fixes #35676.

    *Ryuta Kamizono*

9
*   Change how validation error translation strings are fetched: The new behavior
10 11
    will first try the more specific keys, including doing locale fallback, then try
    the less specific ones.
E
eileencodes 已提交
12

13 14
    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 已提交
15

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

20 21 22
        en.activerecord.errors.models.product.attributes.title.blank
        en.activerecord.errors.models.product.blank
        en.activerecord.errors.messages.blank
E
eileencodes 已提交
23

24 25
        en-US.errors.attributes.title.blank
        en-US.errors.messages.blank
E
eileencodes 已提交
26

27 28
        en.errors.attributes.title.blank
        en.errors.messages.blank
E
eileencodes 已提交
29

30 31
    *Hugo Vacher*

E
eileencodes 已提交
32

E
eileencodes 已提交
33 34 35 36 37
## Rails 6.0.0.beta3 (March 11, 2019) ##

*   No changes.


38 39
## Rails 6.0.0.beta2 (February 25, 2019) ##

40 41
*   Fix date value when casting a multiparameter date hash to not convert
    from Gregorian date to Julian date.
42 43 44 45

    Before:

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

    After:

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

53
    Fixes #28521.
54 55

    *Sayan Chakraborty*
56

57
*   Fix year value when casting a multiparameter time hash.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

    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*


85 86
## Rails 6.0.0.beta1 (January 18, 2019) ##

B
bogdanvlviv 已提交
87 88 89 90
*   Add `ActiveModel::Errors#of_kind?`.

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

91 92 93 94 95
*   Fix numericality equality validation of `BigDecimal` and `Float`
    by casting to `BigDecimal` on both ends of the validation.

    *Gannon McGibbon*

96 97 98 99
*   Add `#slice!` method to `ActiveModel::Errors`.

    *Daniel López Prat*

100 101 102 103 104 105
*   Fix numericality validator to still use value before type cast except Active Record.

    Fixes #33651, #33686.

    *Ryuta Kamizono*

106 107
*   Fix `ActiveModel::Serializers::JSON#as_json` method for timestamps.

R
Ryuta Kamizono 已提交
108 109 110 111 112 113 114 115 116 117 118
    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"
    ```
119 120 121

    *Bogdan Gusiev*

122 123
*   Allows configurable attribute name for `#has_secure_password`. This
    still defaults to an attribute named 'password', causing no breaking
124
    change. There is a new method `#authenticate_XXX` where XXX is the
125
    configured attribute name, making the existing `#authenticate` now an
126
    alias for this when the attribute is the default 'password'.
R
Ryuta Kamizono 已提交
127

128
    Example:
129

130
        class User < ActiveRecord::Base
131
          has_secure_password :recovery_password, validations: false
132
        end
133

134
        user = User.new()
135 136 137
        user.recovery_password = "42password"
        user.recovery_password_digest # => "$2a$04$iOfhwahFymCs5weB3BNH/uX..."
        user.authenticate_recovery_password('42password') # => user
138

R
Ryuta Kamizono 已提交
139
    *Unathi Chonco*
140

141
*   Add `config.active_model.i18n_customize_full_message` in order to control whether
B
bogdanvlviv 已提交
142 143 144 145 146
    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 已提交
147
*   Rails 6 requires Ruby 2.5.0 or newer.
J
Jeremy Daer 已提交
148

K
Kasper Timm Hansen 已提交
149
    *Jeremy Daer*, *Kasper Timm Hansen*
150 151


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