我的应用程序控制器看起来像这样
class ApplicationController < ActionController::Base
include AuthenticatedSystem
helper :all # include all helpers, all the time
protect_from_forgery # :secret => 'sup3rs3cr3t'
filter_parameter_logging :password
# Here's the interesting bit
before_filter :login_required, :except => [:index, :show, :new]
end
现在我有另一个看起来像这样的控制器
class CompletelySecretController < ApplicationController
# the other interesting bit
before_filter :login_required
def index
@secrets = Secret.find(:all)
end
end
我仍然可以看到所有的秘密,尽管我说明所有行动都需要登录
before_filter :login_required
认为子类中的before_filter
是否覆盖父类中的before_filter
是不是直观的?
答案 0 :(得分:1)
before_filter
不会覆盖超类中的相同调用,而是相互堆叠。这是过滤器链的工作方式。如果您想跳过ApplicationController中添加的过滤器,可以使用skip_before_filter
方法 - 请参阅“过滤器链跳过”部分here in the filters documentation。