ruby on rails - query - ¿Cómo puedo especificar el orden en que before_filters se ejecutan?
rails session (4)
Before_filter Order in Rails http://b2.broom9.com/?p=806
Orden de la cadena de filtros rails.rubyonrails.org/classes/ActionController/Filters/…
Si necesita un pedido de garantía, puede hacer esto:
before_filter :fn3
def fn3
fn1
fn2
end
¿Los raíles ofrecen alguna garantía sobre el orden en que los filtros se ejecutan antes con cualquiera de los siguientes usos:
before_filter [:fn1, :fn2]
o
before_filter :fn1
before_filter :fn2
Agradecería cualquier ayuda.
La cadena de filtros para CheckoutController
no sigue este orden
:ensure_items_in_cart, :ensure_items_in_stock, :verify_open_shop
En cambio, debería ser
:ensure_items_in_stock, :ensure_items_in_cart, :verify_open_shop
Si refiere http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html , hay un subtítulo llamado "Orden de cadena de filtro", aquí está el código de ejemplo de eso:
class ShoppingController < ActionController::Base
before_filter :verify_open_shop
class CheckoutController < ShoppingController
prepend_before_filter :ensure_items_in_cart, :ensure_items_in_stock
De acuerdo con la explicación:
La cadena de filtros para
CheckoutController
es ahora:ensure_items_in_cart
:ensure_items_in_stock
:verify_open_shop.
Entonces puede dar explícitamente el orden de la cadena de filtro de esa manera.
por lo que puedo decir, pones la primera función que quieres ejecutar y demás.
Entonces, algo como:
before_filter :fn1, :fn2
def fn1
puts ''foo''
end
def fn2
puts ''bar''
end
Ejecutaría fn1
, luego fn1
.
Espero que ayude.