微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何指定执行before_filters的顺序?

如何解决如何指定执行before_filters的顺序?

| rails是否对以下两种用法之一对执行过滤器之前的顺序做出任何保证:
before_filter [:fn1,:fn2]
要么
before_filter :fn1
before_filter :fn2
我将不胜感激。

解决方法

如果您参考http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html,则有一个子标题\“ Filter chain ordering \”,下面是示例代码:
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
,据我所知,您放置了要执行的第一个函数,依此类推。 因此,类似:
before_filter :fn1,:fn2

def fn1
  puts \'foo\'
end

def fn2
  puts \'bar\'
end
先执行
fn1
,然后再执行
fn2
。 希望能有所帮助。,
CheckoutController
的过滤链不遵循该顺序
:ensure_items_in_cart,:ensure_items_in_stock,:verify_open_shop
相反,它应该是
:ensure_items_in_stock,:ensure_items_in_cart,:verify_open_shop

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。