2010-08-02 9 views
20

Trong ví dụ sau,Ruby on Rails, before_filter và lệnh prepend_before_filter là?

before_filter :foo 
before_filter :bar 
before_filter :wah 
prepend_before_filter :heehee 
prepend_before_filter :haha 

như vậy thì lệnh thực hiện sẽ là:

haha, heehee, foo, bar, wah? <-- note that haha is actually before heehee 

Và đó là một lý do để không liệt kê hahaheehee đầu tiên ở nơi đầu tiên nhưng thực sự sử dụng prepend?

Trả lời

26

Theo hiểu biết của tôi đây là để giải quyết các lớp kế thừa mà bạn không thể xác định thứ tự của các before_filter:

ApplicationController < ActionController::Base  
    before_filter :do_this_first  
    #.... 
end 

SomeController < ApplicationController  
    before_filter :do_this_second 
    #.... 
end 

Ở đây, không ai trong số các phương pháp xác định sẽ có sở thích trừ khi bạn sử dụng một prepend_before_filter.

0

Có vẻ như prepend_filter, trong hàng đợi before_filter s, nó sẽ thêm bộ lọc ở phía trước hàng đợi. Do đó, đến trước, được phục vụ trước.