我有一个应用程序,在初始帐户设置期间,用户只能访问他们的: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
期间,只有管理员可以更改该信息。
由于user_params
是为每个方法(new、create、edit、update、show、destroy)调用的,因此如果我仅在帐户创建/验证后才将对这些属性的访问权限限制为Admins,则它将不允许用户写入这些属性并设置帐户。
关于如何解决这个问题有什么想法吗?或者我只是遗漏了strong_parameters的一些内容?
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