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

时间:2011-04-07 08:34:13

标签: ruby-on-rails devise registration

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

Unknown action

Could not find devise mapping for path "/users/1/edit"

唯一可行的路径是/ users / edit,它显示当前用户的编辑页面。

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

devise_for :users, :controllers  => { :registrations => 'users' }
resources :users

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分: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

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

Devise也解决了这个in their wiki

答案 1 :(得分:7)

Devise非常适合用户身份验证内置支持管理用户。所以你必须自己构建它。

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

答案 2 :(得分:1)

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

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

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