在设计中以管理员身份编辑其他用户,ruby on rails

Met*_*ker 3 devise ruby-on-rails-4

我在我的 Ruby on Rails 项目中使用了 devise,并且用户有一个 admin-attribute:

架构.rb:

     create_table "users", force: :cascade do |t|
       .

        t.boolean  "admin",                  default: false
      end
Run Code Online (Sandbox Code Playgroud)

我希望管理员用户可以编辑其他用户。我不是第一个问这个问题的人,但所有给出的答案都缺乏明确的说明:

  1. 在 2011 年的设计 wiki 中有一个条目:https : //github.com/plataformatec/devise/wiki/How-To%3a-Manage-users-through-a-CRUD-interface

但我不明白我需要做什么:它"devise_for :users, :path_prefix => 'my'"在路线中提到,但我的路线中没有。然后,它提到,我需要如何删除 params 哈希的密码密钥,但我的 users_controller 为空。不再提供更多说明。

  1. 对此有一个 stackoverflow 答案:设计:允许管理员编辑其他用户 - Rails

但我不完全明白,需要做什么:我明白了,我需要添加devise_for :users, :path_prefix => 'd'到我的路由中,但海报还谈到了自己构建表单和控制器,以及隔离用户控制器。我不明白,他是什么意思。

  1. 还有另一个 stackoverflow 答案:Rails,Devise - 管理员试图编辑另一个用户配置文件,而是加载了自己的配置文件

在这个中,海报使用了 cancan,而且他的用户控制器中似乎确实有一个管理类,而我没有:

class Admin::UsersController < ApplicationController
  def index
    @users = User.all
  end
end
Run Code Online (Sandbox Code Playgroud)

再一次,我不知道海报是如何到达那里的,他做了什么。

是否有分步指南,让管理员用户编辑其他用户配置文件?

你可以在这里访问我的代码:https : //github.com/Metaphysiker/philosophica

提前致谢!

Met*_*ker 5

我想到了:

  1. 在路由中添加前缀 devise_for :users,: :path_prefix => 'my'
  2. 在下面添加 devise_for: resources :users
  3. 将 edit.html.erb 从注册从设计复制到用户。
  4. 改变 <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>

到: <%= form_for(@user) do |f| %>

  1. 将此添加到用户控制器:

       def edit
         @user = User.find(params[:id])
       end
    
    
       def update
         @user = User.find(params[:id])
         if @user.update(user_params)
           redirect_to adminpanel_path
         else
           render 'edit'
         end
       end
    
    Run Code Online (Sandbox Code Playgroud)

完毕。(奇怪的是,我不能在代码中输入数字 5)