使用ActiveSupport.on_load加载Alias / Override帮助程序

时间:2013-07-25 09:20:25

标签: ruby-on-rails ruby activesupport

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助手正确执行别名/覆盖?

0 个答案:

没有答案