使用strong_parameters解决多个访问案例

时间:2013-08-06 20:33:07

标签: ruby-on-rails-3 authentication strong-parameters

我有一个应用程序允许用户在初始帐户设置期间访问他们的: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的内容?

1 个答案:

答案 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