0

我正在为我的应用程序使用 Devise & CanCan。当用户登录时,他们会被带到他们的帐户页面 - 我为此设置了自定义重定向:

def after_sign_in_path_for(resource)
    url_for :controller => '/users', :id => current_user.id, :action => 'myaccount'
end

但是,当我尝试在用户注册时执行相同操作时 - 即使用 after_sign_up_path_for(resource),然后我收到此错误:

 NoMethodError in UsersController#show

undefined method `user' for #<User:0x25d15e8>

它指的是我为CanCan设置的ability.rb文件,如下:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user

    can :manage, :all do |all|
        all.try(:user) == user
    end

它说的是问题是 all.try(:user) == user。我不明白为什么这会导致问题?似乎无论我为重定向做什么,它总是会把我带到例如 {app}/users/22 并给出这个错误。

4

1 回答 1

0

按照SO 帖子告诉您正在尝试执行user.try(:user) == user这是所有问题的根源。

所以你可以用它can :manage, :all, :id => user.id来解决问题。

于 2013-03-01T13:06:14.937 回答