aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/CHANGELOG.md
blob: 77386e5e4153301c34fcb913045e1c4042841e69 (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
*   Assigning an unknown attribute key to an `ActiveModel` instance during initialization
    will now raise `ActiveModel::AttributeAssignment::UnknownAttributeError` instead of
    `NoMethodError`

    ```ruby
    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

    ``` ruby
    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:

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

    ```ruby
    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 ActiveModel or ActiveModel::Validations
    `before_` callback had the side effect of halting the callback chain.
    This is not recommended anymore and, depending on the value of the
    `config.active_support.halt_callback_chains_on_return_false` option, will
    either not work at all or display a deprecation warning.


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