Rails是否保证在以下两种用法中before filter执行的顺序?
before_filter [:fn1, :fn2]
或者before_filter :fn1
before_filter :fn2
我会非常感激任何帮助。
Rails是否保证在以下两种用法中before filter执行的顺序?
before_filter [:fn1, :fn2]
或者before_filter :fn1
before_filter :fn2
我会非常感激任何帮助。
class ShoppingController < ActionController::Base
before_filter :verify_open_shop
class CheckoutController < ShoppingController
prepend_before_filter :ensure_items_in_cart, :ensure_items_in_stock
根据解释:
CheckoutController
的筛选器链现在为:ensure_items_in_cart
、:ensure_items_in_stock
和:verify_open_shop.
因此,您可以明确地指定筛选器链的顺序。
在Rails中的before_filter http://b2.broom9.com/?p=806
过滤器链排序 http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html
如果你需要保证顺序,可以这样做:
before_filter :fn3
def fn3
fn1
fn2
end
fn1 ? fn2 : false
- Eric H.例如:
before_filter :fn1, :fn2
def fn1
puts 'foo'
end
def fn2
puts 'bar'
end
将会先执行 fn1
,然后执行 fn2
。
希望这有所帮助。
:fn1, :fn2
,但是:fn2
先被调用了。 - r3b00tCheckoutController
的过滤器链不遵循这个顺序。< /p >
:ensure_items_in_cart, :ensure_items_in_stock, :verify_open_shop
:ensure_items_in_stock, :ensure_items_in_cart, :verify_open_shop