1

我正在尝试使用 CanCan 进行基本用户授权,出于某种原因,已经登录的用户在提交了他们的个人资料更新后,devise 正在退出。

我想不通,为什么会这样。

我的ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    can [:welcome, :read, :create, :new], User

    if user.role == 'member'
      can :manage, User, :id => user.id
    end
  end
end

而我的update方法来自UsersController

def update
  if @user.update_attributes(params[:user])
    flash[:success] = "Profile saved!"
    #sign_in @user // tried this with no lucky, it still signing out
    redirect_to @user
  else
    render 'edit'
  end
end

如您所见,它非常基本。

flash消息正在显示,并且也redirect按预期工作。

任何的想法?

4

2 回答 2

0

我在您的代码中找不到错误。我认为您需要在其他地方找到问题。例如,你能显示你的params哈希吗?@user并在更新过程中显示 SQL 日志。

于 2012-04-26T18:31:16.397 回答
0

我忘了添加before_filter :authenticate_user!到我的UsersController

它现在正在工作。谢谢

于 2012-04-27T02:49:14.863 回答