我有一个Rails关注点定义如下:
module MyConcern
extend ActiveSupport::Concern
included do
before_filter :filter_inside_concern
end
def filter_inside_concern
# ...
end
end
我在控制器层上也有一个 before_filter
:
class MyController < ApplicationController
before_filter :filter_inside_controller
end
如果我在 MyController
中包含 MyConcern
,那么调用before过滤器的顺序是否取决于代码的排列方式?例如,如果我们有
class MyController < ApplicationController
include MyConcern
before_filter :filter_inside_controller
end
filter_inside_concern
在 filter_inside_controller
之前被调用(反之亦然)?
谢谢!
2 回答
如果您使用:
filter_inside_concern
将在filter_inside_controller
之前被调用如果你想在
filter_inside_concern
之前调用filter_inside_controller
,则需要使用prepend_before_filter
代替:另请注意,
before_filter
和prepend_before_filter
将被弃用 . 您应该使用before_action
和prepend_before_action
代替 .我重新创建了你的情况,并找出执行顺序取决于你编写两个过滤器的顺序 .
如果你写
关注过滤器将首先执行
或者如果按此顺序编写过滤器
控制器过滤器将首先执行