Devise提供了几种辅助方法,例如current_user
。它uses ActiveSupport's on_load
懒洋洋地将这些助手加载到控制器中。
然而,这意味着当我第一次启动Rails时,我尝试别名这些辅助方法的尝试将无法正常工作。例如:
# in my ApplicationController
alias_method :devise_current_user, :current_user
def current_user
user = devise_current_user
if !user && !devise_controller?
foo
end
return user
end
首次初始化Rails时,这会导致“找不到方法错误”。我可以先启动Rails,然后添加这些代码,然后就可以了(正确别名和覆盖方法)。
如何为这些on_load
助手正确执行别名/覆盖?