我正在为我的应用程序使用 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 并给出这个错误。