Does Rails以下のいずれかの使用法でフィルターが実行される前の順序について保証します。
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 Order in Rails 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