我第一次尝试Devise.我想要做的一件事是为管理员用户创建,查找和编辑用户提供一个界面.这是我可能出错了的地方.
我创建了一个PeopleController类,该类继承自ApplicationController,它列出了人员,并提供了创建和更新用户的方法和视图.一切都正常,一个例外.当管理员用户更新自己的记录时,会话被清除,保存后必须重新登录.
在这个应用程序中,我没有使用可注册模块.只有管理员用户可以创建新的用户.设计用于提供用户管理工具的正确方法是什么?创建我自己的控制器似乎是错误的路径.
在此先感谢您的帮助.
解决方法
非常感谢您的帮助.这本质上正是我在做什么我发现了一个线索,帮助我解决了在这个维基编辑自己的记录时用户会话被清除的问题:
这是我需要的那一行:
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
现在如果当前用户编辑自己的记录,则会话在保存后被还原.
再次感谢您的回应.