У меня есть форма, которая позволяет пользователю обновлять информацию в своем профиле, но я хотел бы предотвратить изменение какой-либо информации.Я также хотел бы сохранить мой код контроллера очень простым.В действии обновления моего Users Controller у меня есть следующий код:
def update
@user = Users.find params[:id]
if @user.update_attributes(params[:user])
flash[:notice] = 'Update successful.'
redirect_to user_path(@user)
else
render :action => :edit
end
end
Это очень чисто и просто, и мне это нравится.Однако мне не нравится то, что пользователь может добавить поле в форму с тем же именем, что и атрибут, и использовать его для изменения запрещенных атрибутов.Есть ли простой способ сделать это, или мне нужно разработать способ сделать это самому?
Один из способов, который я рассматривал, заключался в генерации хеш-значения с использованием аутентификации сообщений на основе хешкод , всех имен элементов формы.Этот код доступа к сообщению будет скрытым значением в форме.Затем, после отправки формы, я снова вычисляю код доступа к сообщению (MAC), используя имена параметров ключей Hash.Если два MAC-адреса различны или первый MAC-адрес отсутствует в параметре Hash, я бы выдал ошибку.Я бы предпочел не тратить время на реализацию этого, если бы уже было простое решение.
Спасибо.