Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
108db00a
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,发现更多精彩内容 >>
提交
108db00a
编写于
7月 31, 2008
作者:
P
Pratik Naik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Raise UnknownAttributeError when unknown attributes are supplied via mass assignment
上级
f64bd2ca
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
1 deletion
+17
-1
activerecord/lib/active_record/base.rb
activerecord/lib/active_record/base.rb
+9
-1
activerecord/test/cases/base_test.rb
activerecord/test/cases/base_test.rb
+8
-0
未找到文件。
activerecord/lib/active_record/base.rb
浏览文件 @
108db00a
...
...
@@ -122,6 +122,10 @@ class DangerousAttributeError < ActiveRecordError
class
MissingAttributeError
<
NoMethodError
end
# Raised when unknown attributes are supplied via mass assignment.
class
UnknownAttributeError
<
NoMethodError
end
# Raised when an error occurred while doing a mass assignment to an attribute through the
# <tt>attributes=</tt> method. The exception has an +attribute+ property that is the name of the
# offending attribute.
...
...
@@ -2400,7 +2404,11 @@ def attributes=(new_attributes, guard_protected_attributes = true)
attributes
=
remove_attributes_protected_from_mass_assignment
(
attributes
)
if
guard_protected_attributes
attributes
.
each
do
|
k
,
v
|
k
.
include?
(
"("
)
?
multi_parameter_attributes
<<
[
k
,
v
]
:
send
(
k
+
"="
,
v
)
if
k
.
include?
(
"("
)
multi_parameter_attributes
<<
[
k
,
v
]
else
respond_to?
(
:"
#{
k
}
="
)
?
send
(:
"
#{
k
}
="
,
v
)
:
raise
(
UnknownAttributeError
,
"unknown attribute:
#{
k
}
"
)
end
end
assign_multiparameter_attributes
(
multi_parameter_attributes
)
...
...
activerecord/test/cases/base_test.rb
浏览文件 @
108db00a
...
...
@@ -904,6 +904,14 @@ def test_customized_primary_key_remains_protected_when_referred_to_as_id
assert_nil
keyboard
.
id
end
def
test_mass_assigning_invalid_attribute
firm
=
Firm
.
new
assert_raises
(
ActiveRecord
::
UnknownAttributeError
)
do
firm
.
attributes
=
{
"id"
=>
5
,
"type"
=>
"Client"
,
"i_dont_even_exist"
=>
20
}
end
end
def
test_mass_assignment_protection_on_defaults
firm
=
Firm
.
new
firm
.
attributes
=
{
"id"
=>
5
,
"type"
=>
"Client"
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录