我很困惑 redirect_to 的工作原理......在下面的代码中,我有一个无论如何都会重定向的授权方法(作为我的问题的一个例子,这在我的应用程序中有一个 if 语句)。然后在我的UsersController中,我想扩展授权方法,并在它下面添加一些逻辑。
我收到错误“ username
nil:NilClass 的未定义方法”。(好吧, current_user 没有定义,但在此语句之前应该有一个重定向)
我的问题是,为什么在对“super”的调用无论如何都应该重定向时执行 UsersController 授权方法中的代码,并且不应该执行该代码?
class ApplicationController < ActionController::Base
before_filter :authorize
def authorize
redirect_to root_path, alert: 'Not authorized'
return false
end
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
class UsersController < ApplicationController
def authorize
super
return true if current_user.username == 'admin'
end
end