Commit 870a7f0
Handle Rails 6.1 ActiveModel::Error#detail
Starting with Rails 6.1 ActiveModel::Error is an actual class:
> Active Model's errors are now objects with an interface that allows
> your application to more easily handle and interact with errors thrown
> by models. The feature[1] includes a query interface, enables more
> precise testing, and access to error details.
>
> [1] rails/rails#32313
As a result of this `resource.details` looks slightly different than in
previous versions and notably doesn't contain `:message` anymore, if
`object.errors.add(:something, message: 'some error')` was used to
specify a validation error.
https://github.com/rails/rails/blob/2a7ff0a5f54979b14b19f827c99295297dda411d/activemodel/lib/active_model/error.rb#L149
From the test suite:
```
note.errors.add(:title, message: 'has typos') if note.errors.key?(:title)
```
Rails 6.0:
```
{
:title=>[{:error=>:invalid, :value=>"BAD_TITLE"},
{:error=>{:message=>"has typos"}}],
:quantity=>[{:error=>:less_than, :value=>109, :count=>100}]
}
```
Rails 6.1:
```
{
:title=>[{:error=>:invalid, :value=>"BAD_TITLE"},
{:error=>:invalid}],
:quantity=>[{:error=>:less_than, :value=>100, :count=>100}]
}
```
The patch addresses this change by merging the error.message into its detail.1 parent f107416 commit 870a7f0
1 file changed
+12
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
59 | | - | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
60 | 70 | | |
61 | 71 | | |
62 | 72 | | |
| |||
0 commit comments