aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/CHANGELOG.md
blob: 318e507ff14aaa1f73e0e94e5a4702df3c02dea6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
## Rails 5.0.0.beta2 (February 01, 2016) ##

*   No changes.


## Rails 5.0.0.beta1 (December 18, 2015) ##

*   Validate multiple contexts on `valid?` and `invalid?` at once.

    Example:

        class Person
          include ActiveModel::Validations

          attr_reader :name, :title
          validates_presence_of :name, on: :create
          validates_presence_of :title, on: :update
        end

        person = Person.new
        person.valid?([:create, :update])    # => false
        person.errors.messages               # => {:name=>["can't be blank"], :title=>["can't be blank"]}

    *Dmitry Polushkin*

*   Add case_sensitive option for confirmation validator in models.

    *Akshat Sharma*

*   Ensure `method_missing` is called for methods passed to
    `ActiveModel::Serialization#serializable_hash` that don't exist.

    *Jay Elaraj*

*   Remove `ActiveModel::Serializers::Xml` from core.

    *Zachary Scott*

*   Add `ActiveModel::Dirty#[attr_name]_previously_changed?` and
    `ActiveModel::Dirty#[attr_name]_previous_change` to improve access
    to recorded changes after the model has been saved.

    It makes the dirty-attributes query methods consistent before and after
    saving.

    *Fernando Tapia Rico*

*   Deprecate the `:tokenizer` option for `validates_length_of`, in favor of
    plain Ruby.

    *Sean Griffin*

*   Deprecate `ActiveModel::Errors#add_on_empty` and `ActiveModel::Errors#add_on_blank`
    with no replacement.

    *Wojciech Wnętrzak*

*   Deprecate `ActiveModel::Errors#get`, `ActiveModel::Errors#set` and
    `ActiveModel::Errors#[]=` methods that have inconsistent behavior.

    *Wojciech Wnętrzak*

*   Allow symbol as values for `tokenize` of `LengthValidator`.

    *Kensuke Naito*

*   Assigning an unknown attribute key to an `ActiveModel` instance during initialization
    will now raise `ActiveModel::AttributeAssignment::UnknownAttributeError` instead of
    `NoMethodError`.

    Example:

        User.new(foo: 'some value')
        # => ActiveModel::AttributeAssignment::UnknownAttributeError: unknown attribute 'foo' for User.

    *Eugene Gilburg*

*   Extracted `ActiveRecord::AttributeAssignment` to `ActiveModel::AttributeAssignment`
    allowing to use it for any object as an includable module.

    Example:

        class Cat
          include ActiveModel::AttributeAssignment
          attr_accessor :name, :status
        end

        cat = Cat.new
        cat.assign_attributes(name: "Gorby", status: "yawning")
        cat.name   # => 'Gorby'
        cat.status # => 'yawning'
        cat.assign_attributes(status: "sleeping")
        cat.name   # => 'Gorby'
        cat.status # => 'sleeping'

    *Bogdan Gusiev*

*   Add `ActiveModel::Errors#details`

    To be able to return type of used validator, one can now call `details`
    on errors instance.

    Example:

        class User < ActiveRecord::Base
          validates :name, presence: true
        end

        user = User.new; user.valid?; user.errors.details
        => {name: [{error: :blank}]}

    *Wojciech Wnętrzak*

*   Change validates_acceptance_of to accept true by default.

    The default for validates_acceptance_of is now "1" and true.
    In the past, only "1" was the default and you were required to add
    accept: true.

*   Remove deprecated `ActiveModel::Dirty#reset_#{attribute}` and
    `ActiveModel::Dirty#reset_changes`.

    *Rafael Mendonça França*

*   Change the way in which callback chains can be halted.

    The preferred method to halt a callback chain from now on is to explicitly
    `throw(:abort)`.
    In the past, returning `false` in an Active Model `before_` callback had
    the side effect of halting the callback chain.
    This is not recommended anymore and, depending on the value of the
    `ActiveSupport.halt_callback_chains_on_return_false` option, will
    either not work at all or display a deprecation warning.

    *claudiob*

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