我想跳过验证,当我试图编辑用户作为管理员。如何在update_attributes期间以管理员身份跳过验证?
型号
class User
...
attr_accessible :company_id, :first_name, :disabled, as: :admin
控制器
class Admin::UsersController
...
def update
@user = User.find(params[:id])
@user.update_attributes(params[:user], as: :admin)
redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
end
所以我试图改变update
行动
def update
@user = User.find(params[:id])
@user.attributes = params[:user]
@user.save(validate: false)
redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
end
但后来我没有访问设置:disabled
个:company_id
属性,因为我不知道在哪里设置as: :admin
我新的铁路。这是安全的吗?这种方法是否不能击败强参数?还是主要用于大规模分配漏洞的强参数? –
强大的参数是用于批量分配的漏洞,你可以结合使用上下文验证,我从来没有真正将它用于角色检查,通常当一个模型从多个表单中更新并且验证需要在它们之间有所不同时 – house9