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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用Devise进行管理员用户管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我第一次尝试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

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

再次感谢您的回应.

猜你在找的Ruby相关文章