Ruby on Rails, before_filter and prepend_before_filter ordering is?

nonopolarity picture nonopolarity · Aug 2, 2010 · Viewed 10.7k times · Source

In the following example,

before_filter :foo
before_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?

Answer

mark picture mark · Aug 2, 2010

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.