0
我使用Ruby和我想知道这个代码的某些行为的更多信息:约on Rails的3更新一个ActiveRecord避免“attr_accessible”
@user.send :attributes=, @attrib, false
是从here。
如果我有这些参数恢复到我的控制器的一种形式:
params[:name]
params[:surname]
params[:email]
,并在控制器我用
@user.send(# Avoiding 'attr_accessible'
:attributes=, {
:name => params[:name],
:surname => params[:surname] },
false)
@user.save
应该只保存“名”和“姓”属性用于@user ActiveRecord。我试过了,它按预期工作。但...
1.
有可能恶意用户可以在保存过程中设置电子邮件的值(也可以在“发送”语句中不考虑电子邮件属性)?
2.
下面的说法是正确的吗?
调用属性=虚假不 更新任何东西,它只是设置 属性值,而忽略任何 attr_accessible白名单。
所以,你可以调用保存之后, 它返回布尔值你 寻找。
对于第2点,我指的是:'@ user.send(...)'是否足以更新'@user'对象?也就是说,使用'@ user.save'是否有必要? – user502052 2011-02-07 12:01:14