0

我有一个应用程序,用户只能在初始帐户设置期间访问他们的 :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每个方法(新建、创建、编辑、更新、显示、销毁)都被调用,如果我仅在创建帐户后将这些属性的访问权限限制为管理员,它将不允许用户编写这些属性并设置一个帐户/确认。

关于如何解决这个问题的任何想法?或者我只是错过了关于 strong_parameters 的一些东西?

4

1 回答 1

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
于 2013-08-06T20:43:10.857 回答