如何指定before_filters执行的顺序?
导轨是否做出关于以使前过滤器将与以下两种用法的执行任何保证:如何指定before_filters执行的顺序?
before_filter [:fn1, :fn2]
或
before_filter :fn1
before_filter :fn2
我会很感激的任何帮助。
如果你是指http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html,还有一个副标题称为“滤波器链顺序”,这里是示例代码:
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.
所以,你可以明确地给过滤器链那样的顺序。
据我所知,你把你想要执行的第一个功能,等等。
所以,像这样:
before_filter :fn1, :fn2
def fn1
puts 'foo'
end
def fn2
puts 'bar'
end
将执行fn1
,然后fn2
。
希望有所帮助。
我使用Rails 4,即使我的订单是':FN1,:FN2 ',:fn2首先被调用。 – Reboot 2017-08-21 07:55:46
的before_filter秩序的Rails http://b2.broom9.com/?p=806
过滤器链订货 http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html
如果你需要保证顺序,你可以这样做:
before_filter :fn3
def fn3
fn1
fn2
end
的过滤器链的CheckoutController
不遵循这个顺序
:ensure_items_in_cart, :ensure_items_in_stock, :verify_open_shop
相反,它应该是
:ensure_items_in_stock, :ensure_items_in_cart, :verify_open_shop
正是我在找什么...... @Johnny你是一个安全的生活。非常感谢。 – Surya 2013-05-14 17:22:58
@Sector和JohnnyWoo:你到http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html的链接已经死了。 – Kevin 2013-07-25 16:15:44
在rails 3.2.14上,我得到的过滤器链如下::ensure_items_in_stock,:ensure_items_in_cart,:verify_open_shop – Raf 2013-10-04 09:44:58