IT박스

before_filter가 실행되는 순서를 어떻게 지정할 수 있습니까?

itboxs 2020. 11. 18. 08:47
반응형

before_filter가 실행되는 순서를 어떻게 지정할 수 있습니까?


레일은 다음 사용 중 하나를 사용하여 필터가 실행되기 전 순서에 대해 보장합니까?

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

실행겠습니까 fn1fn2.

도움이 되었기를 바랍니다.


의 필터 체인 CheckoutController이이 순서를 따르지 않습니다.

:ensure_items_in_cart, :ensure_items_in_stock, :verify_open_shop

대신에

:ensure_items_in_stock, :ensure_items_in_cart, :verify_open_shop

참고 URL : https://stackoverflow.com/questions/5711797/how-can-i-specify-the-order-that-before-filters-are-executed

반응형