只允许一个用户成为具有设计的管理员

Allow only one user to be an admin with devise

我正在创建一个网页 rails 6 , devise and cancan .

我需要一个管理员角色,但我不想创建一个单独的模型,而是我向用户添加了一个布尔列 table,但事情就是这样,

如果有任何用户注册,那么任何用户只能通过将此列的值更改为 true 来授予管理员权限,这将是一个安全问题。

所以我想也许我会从 "user_params" 中删除 "admin",但我必须从控制台进行此更改,这还不够好。

我应该如何只向特定用户授予管理员权限,我的想法是我只允许第一个用户或特定电子邮件使用它,但感觉很愚蠢,必须有更聪明的方法。

我如何让应用程序只有一个管理员可以让任何其他用户成为管理员,但只有他可以做到这一点,如果有任何普通用户注册,无论如何他都不能以任何方式操纵此列?

此致

  1. 从注册控制器中的 user_params 中删除 admin。您不希望用户仅通过准备请求就成为管理员。
  2. 介绍第三列super_admin,如果您只需执行一次,则从控制台授予此角色。
  3. 创建只有 super_admin 可以访问的视图和控制器,她可以在其中为所有用户更新 admin