Я использую Ruby on Rails 3, и я хотел бы знать некоторые варианты поведения этого кода:
@user.send :attributes=, @attrib, false
То есть от здесь .
Если у меня есть форма, которая возвращает эти параметры моему контроллеру:
params[:name]
params[:surname]
params[:email]
и в контроллере, который я использую
@user.send( # Avoiding 'attr_accessible'
:attributes=, {
:name => params[:name],
:surname => params[:surname] },
false )
@user.save
, он должен сохранять только «имя» и «атрибуты фамилии для @user ActiveRecord.Я попробовал это, и это работает, как ожидалось.Но ...
1.
возможно, что злонамеренный пользователь может каким-либо образом установить значение электронной почты в процессе сохранения (также, если атрибут электронной почты не учитывается в операторе "send")?
2.
Правильно ли следующее утверждение?
Вызов атрибутов = со значением false пока ничего не обновляет, он просто устанавливаетзначения атрибута, игнорируя при этом любой белый список attr_accessible.
Таким образом, вы можете просто впоследствии вызвать функцию сохранения, которая возвращает искомое логическое значение.