我有一个应用程序允许用户在初始帐户设置期间访问他们的:name,:lastname,:email属性一次。在此之后(出于安全原因),他们不允许更改这些属性中的任何一个;只有管理员可以。
def user_params
if current_user && current_user.admin?
params.require(:user).permit(:name,
:surname,
:admin)
else
params.require(:user).permit()
end
end
然后在user.create
期间,我允许用户填写注册表单并访问这些受保护的属性,但在user.update
期间,只有管理员可以更改该信息。
由于为每个方法(new,create,edit,update,show,destroy)调用了user_params
,因此如果我限制访问权限,它将不允许用户编写这些属性并设置帐户只有在创建帐户/验证帐户后,这些属性才会显示给管理员。
有关如何解决此问题的任何想法?或者我只是遗漏了一些关于strong_parameters的内容?
答案 0 :(得分:1)
user_params
只是一个辅助方法,因此您不必在所有操作中重复相同的代码。如果create
中的代码与update
中的代码不同,只需创建另一个辅助方法:
def user_create_params
if current_user && current_user.admin?
params.require(:user).permit(:name, :surname, :admin)
else
params.require(:user).permit(:name, :surname)
end
end
def user_update_params
if current_user && current_user.admin?
params.require(:user).permit(:name, :surname, :admin)
else
params.require(:user).permit()
end
end