【发布时间】:2015-06-16 15:34:47
【问题描述】:
我删除了以下行的批量分配漏洞:
friend = Friend.find(params[:id])
friend.update_attributes(params[:name])
重写为:
friend = Friend.find(params[:id])
friend.update_attributes(params.permit(:name))
但这给了我这个错误:
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes for Friend: name):
Unpermitted parameters: id
知道为什么我会收到此错误吗?
Edit :
我添加了attr_accessible :status_id 和params.permit(:id, :name),错误被删除。但是添加attr_accessible 是正确的做法,因为我们编写了强大的参数来删除这一行,不是吗?
【问题讨论】:
-
你的模型中有
attr_accessible吗? -
显示
params.inspect。确保您正在检查代码的正确部分 - 也许您编辑更新方法,但触发了创建方法。 -
params.permit(:name, :id) -
我已经从我的模型中删除了
attr_accessible并且做params.permit(:name, :id)不起作用 -
解决此问题的一种快速方法是根本不从前端发送
id,正如您在此处提到的“params = {"name"=>"John", "id"=>"15"}”。因为无论如何你都没有将它保存到数据库中
标签: ruby-on-rails security ruby-on-rails-4 mass-assignment