CHANGELOG.md 4.4 KB
Newer Older
1 2 3 4 5
## Rails 6.0.0.rc2 (July 22, 2019) ##

*   No changes.


6 7
## Rails 6.0.0.rc1 (April 24, 2019) ##

8 9 10 11 12 13
*   Type cast falsy boolean symbols on boolean attribute as false.

    Fixes #35676.

    *Ryuta Kamizono*

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

18 19
    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 已提交
20

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

25 26 27
        en.activerecord.errors.models.product.attributes.title.blank
        en.activerecord.errors.models.product.blank
        en.activerecord.errors.messages.blank
E
eileencodes 已提交
28

29 30
        en-US.errors.attributes.title.blank
        en-US.errors.messages.blank
E
eileencodes 已提交
31

32 33
        en.errors.attributes.title.blank
        en.errors.messages.blank
E
eileencodes 已提交
34

35 36
    *Hugo Vacher*

E
eileencodes 已提交
37

E
eileencodes 已提交
38 39 40 41 42
## Rails 6.0.0.beta3 (March 11, 2019) ##

*   No changes.


43 44
## Rails 6.0.0.beta2 (February 25, 2019) ##

45 46
*   Fix date value when casting a multiparameter date hash to not convert
    from Gregorian date to Julian date.
47 48 49 50

    Before:

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

    After:

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

58
    Fixes #28521.
59 60

    *Sayan Chakraborty*
61

62
*   Fix year value when casting a multiparameter time hash.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

    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*


90 91
## Rails 6.0.0.beta1 (January 18, 2019) ##

B
bogdanvlviv 已提交
92 93 94 95
*   Add `ActiveModel::Errors#of_kind?`.

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

96 97 98 99 100
*   Fix numericality equality validation of `BigDecimal` and `Float`
    by casting to `BigDecimal` on both ends of the validation.

    *Gannon McGibbon*

101 102 103 104
*   Add `#slice!` method to `ActiveModel::Errors`.

    *Daniel López Prat*

105 106 107 108 109 110
*   Fix numericality validator to still use value before type cast except Active Record.

    Fixes #33651, #33686.

    *Ryuta Kamizono*

111 112
*   Fix `ActiveModel::Serializers::JSON#as_json` method for timestamps.

R
Ryuta Kamizono 已提交
113 114 115 116 117 118 119 120 121 122 123
    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"
    ```
124 125 126

    *Bogdan Gusiev*

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

133
    Example:
134

135
        class User < ActiveRecord::Base
136
          has_secure_password :recovery_password, validations: false
137
        end
138

139
        user = User.new()
140 141 142
        user.recovery_password = "42password"
        user.recovery_password_digest # => "$2a$04$iOfhwahFymCs5weB3BNH/uX..."
        user.authenticate_recovery_password('42password') # => user
143

R
Ryuta Kamizono 已提交
144
    *Unathi Chonco*
145

146
*   Add `config.active_model.i18n_customize_full_message` in order to control whether
B
bogdanvlviv 已提交
147 148 149 150 151
    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 已提交
152
*   Rails 6 requires Ruby 2.5.0 or newer.
J
Jeremy Daer 已提交
153

K
Kasper Timm Hansen 已提交
154
    *Jeremy Daer*, *Kasper Timm Hansen*
155 156


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