加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Devise进行管理员用户管理

发布时间:2020-12-16 22:46:23 所属栏目:百科 来源:网络整理
导读:我第一次尝试Devise.我想要做的一件事是为管理员用户创建,查找和编辑用户提供一个界面.这是我可能出错了的地方. 我创建了一个PeopleController类,该类继承自ApplicationController,它列出了人员,并提供了创建和更新用户的方法和视图.一切都正常,一个例外.当
我第一次尝试Devise.我想要做的一件事是为管理员用户创建,查找和编辑用户提供一个界面.这是我可能出错了的地方.

我创建了一个PeopleController类,该类继承自ApplicationController,它列出了人员,并提供了创建和更新用户的方法和视图.一切都正常,一个例外.当管理员用户更新自己的记录时,会话被清除,保存后必须重新登录.

在这个应用程序中,我没有使用可注册模块.只有管??理员用户可以创建新的用户.设计用于提供用户管理工具的正确方法是什么?创建我自己的控制器似乎是错误的路径.

在此先感谢您的帮助.

解决方法

非常感谢您的帮助.这本质上正是我在做什么我发现了一个线索,帮助我解决了在这个维基编辑自己的记录时用户会话被清除的问题:

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

这是我需要的那一行:

sign_in resource_name,resource,:bypass => true

这个方法位于Devise :: Controllers :: Helpers中,所以我在控制器中这样做.

class PeopleController < ApplicationController
   include Devise::Controllers::Helpers

然后在我的更新方法中,只有当current_user.id等于正在编辑的id时才调用它:

def update
  @person = User.find(params[:id])
  if @person.update_attributes(params[:user])
    sign_in @person,:bypass => true if current_user.id == @person.id
    redirect_to  person_path(@person),:notice  => "Successfully updated user."
  else
    render :action => 'edit'
  end
end

现在如果当前用户编辑自己的记录,则会话在保存后被还原.

再次感谢您的回应.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读