Ruby on Rails, before_filter and prepend_before_filter ordering is?
In the following example,
before_filter :foo
bef开发者_如何学编程ore_filter :bar
before_filter :wah
prepend_before_filter :heehee
prepend_before_filter :haha
so then the execution orders will be:
haha, heehee, foo, bar, wah? <-- note that haha is actually before heehee
And is there a reason not to list haha
and heehee
first in the first place but actually use prepend
?
To my knowledge this is to solve class inheritance where you cannot define the order of the before_filter:
ApplicationController < ActionController::Base
before_filter :do_this_first
#....
end
SomeController < ApplicationController
before_filter :do_this_second
#....
end
Here, neither of the methods defined will have preference unless you use a prepend_before_filter.
Looks like prepend_filter
, in a queue of before_filter
s, it adds a filter in front of the queue. Hence, last come, first served.
精彩评论