Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
ee2b84f3
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ee2b84f3
编写于
11月 21, 2018
作者:
D
Daniel Lopez Prat
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add slice! method to ActiveModel::Errors
上级
218e50ce
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
0 deletion
+39
-0
activemodel/CHANGELOG.md
activemodel/CHANGELOG.md
+4
-0
activemodel/lib/active_model/errors.rb
activemodel/lib/active_model/errors.rb
+11
-0
activemodel/test/cases/errors_test.rb
activemodel/test/cases/errors_test.rb
+24
-0
未找到文件。
activemodel/CHANGELOG.md
浏览文件 @
ee2b84f3
*
Add
`#slice!`
method to
`ActiveModel::Errors`
.
*Daniel López Prat*
*
Fix numericality validator to still use value before type cast except Active Record.
Fixes #33651, #33686.
...
...
activemodel/lib/active_model/errors.rb
浏览文件 @
ee2b84f3
...
...
@@ -112,6 +112,17 @@ def merge!(other)
@details
.
merge!
(
other
.
details
)
{
|
_
,
ary1
,
ary2
|
ary1
+
ary2
}
end
# Removes all errors except the given keys. Returns a hash containing the removed errors.
#
# person.errors.keys # => [:name, :age, :gender, :city]
# person.errors.slice!(:age, :gender) # => { :name=>["cannot be nil"], :city=>["cannot be nil"] }
# person.errors.keys # => [:age, :gender]
def
slice!
(
*
keys
)
keys
=
keys
.
map
(
&
:to_sym
)
@details
.
slice!
(
*
keys
)
@messages
.
slice!
(
*
keys
)
end
# Clear the error messages.
#
# person.errors.full_messages # => ["name cannot be nil"]
...
...
activemodel/test/cases/errors_test.rb
浏览文件 @
ee2b84f3
...
...
@@ -411,6 +411,30 @@ def test_no_key
assert_equal
({
name:
[{
error: :blank
},
{
error: :invalid
}]
},
person
.
errors
.
details
)
end
test
"slice! removes all errors except the given keys"
do
person
=
Person
.
new
person
.
errors
.
add
(
:name
,
"cannot be nil"
)
person
.
errors
.
add
(
:age
,
"cannot be nil"
)
person
.
errors
.
add
(
:gender
,
"cannot be nil"
)
person
.
errors
.
add
(
:city
,
"cannot be nil"
)
person
.
errors
.
slice!
(
:age
,
"gender"
)
assert_equal
[
:age
,
:gender
],
person
.
errors
.
keys
end
test
"slice! returns the deleted errors"
do
person
=
Person
.
new
person
.
errors
.
add
(
:name
,
"cannot be nil"
)
person
.
errors
.
add
(
:age
,
"cannot be nil"
)
person
.
errors
.
add
(
:gender
,
"cannot be nil"
)
person
.
errors
.
add
(
:city
,
"cannot be nil"
)
removed_errors
=
person
.
errors
.
slice!
(
:age
,
"gender"
)
assert_equal
({
name:
[
"cannot be nil"
],
city:
[
"cannot be nil"
]
},
removed_errors
)
end
test
"errors are marshalable"
do
errors
=
ActiveModel
::
Errors
.
new
(
Person
.
new
)
errors
.
add
(
:name
,
:invalid
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录