设计:允许管理员编辑其他用户 - Rails

Hai*_*ter 17 ruby-on-rails registration devise

我正在尝试允许管理员用户在Devise中编辑其他用户,但是当我尝试访问另一个用户的编辑页面时(例如/ users/1/edit),我收到以下消息:

Unknown action

Could not find devise mapping for path "/users/1/edit"
Run Code Online (Sandbox Code Playgroud)

似乎有效的唯一路径是/ users/edit,它显示当前用户的编辑页面.

在我的路线文件中,我有:

devise_for :users, :controllers  => { :registrations => 'users' }
resources :users
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Jos*_*ach 19

我也必须这样做,而且它目前还不是设计的.由于最受欢迎的答案有一个死链接,我以为我会在这里发布我的解决方案.

您需要创建一个UsersController并自己构建表单和控制器,但是您还需要隔离设计设置的UsersController.为此,请在您的routes.rb文件中修改您的devise_for :users通话

devise_for :users, :path_prefix => 'd' # routes for devise modules on User

resources :users # custom admin-type CRUD for users
Run Code Online (Sandbox Code Playgroud)

这会将所有默认设计处理的路由更改为/ d/users/...并让您拥有/ users/...路径,以便您以管理员身份管理用户.

Devise也在他们的wiki中解决了这个问题.


Dty*_*Dty 7

设计是伟大的用户身份验证,但它并没有配备内置支持管理用户.所以你必须自己构建它.

这是一个如何做到这一点的例子.这个例子有几个月了,但它应该指向正确的方向.


Cha*_*zak 1

我已经完成了你想做的事情,而且你的路线看起来是正确的。

您还需要创建一个 UsersController 来处理您想要对用户执行的所有 CRUD 操作。这与 Devise 是分开的。

当您的 UsersController 存在时,如果 current_user 不是管理员,则只能通过重定向(可能在 before 过滤器中)允许管理员用户访问特定操作。