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