在轨当您注册在他们在控制器类中注册的过滤器之前来抽象超过滤器。 说我想就在过滤器链的末端执行被称为作为过滤器进行身份验证方法。 我可以计算出来的唯一方法是声明的before_filter在我所有的控制器类的最后一个过滤器(也有很多人)。 有没有申报超此过滤器的方式,并仍然最后执行? 我希望它最后执行的原因是控制器类可能会修改认证要求,只是该控制器,我想这些修改,考虑到最终的验证过滤器被调用之前。
Answer 1:
使用prepend_before_filter
在你的控制器类的代替before_filter
或append_before_filter
。
Answer 2:
Rails的调用你的ApplicationController第一,当地的一个前...所以你可以(使用你的例子)做这样的事情:
在应用程序控制器,你有你before_filter
回调,而被调用相应的方法:
before_filter :authenticate
def authenticate
# do something
end
在控制器你正在使用的资源类型...
你可以重新定义/替代authenticate
def authenticate
# do something else
end
你甚至可以选择不使用你的authenticate
回调的一些方法
skip_before_filter :authenticate, :only => :my_method_without_auth
文章来源: How do you append a filter to the very end of a filter chain from a superclass?