Gibt Rails eine Garantie für die Reihenfolge, in der Filter mit einer der folgenden Verwendungen ausgeführt werden:
before_filter [:fn1, :fn2]
oder
before_filter :fn1
before_filter :fn2
Ich würde mich über jede Hilfe freuen.
Antworten:
Wenn Sie auf http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html verweisen , gibt es eine Unterüberschrift mit dem Namen "Filterkettenreihenfolge". Hier ist der Beispielcode daraus:
class ShoppingController < ActionController::Base
before_filter :verify_open_shop
class CheckoutController < ShoppingController
prepend_before_filter :ensure_items_in_cart, :ensure_items_in_stock
Nach der Erklärung:
Die Filterkette für die
CheckoutController
ist jetzt:ensure_items_in_cart
,:ensure_items_in_stock
,:verify_open_shop.
Sie können also die Reihenfolge der Filterkette explizit so angeben.
Vor_Filter Bestellung in Schienen http://b2.broom9.com/?p=806
Bestellung der Filterkette http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html
Wenn Sie eine Garantiebestellung benötigen, können Sie dies tun:
before_filter :fn3
def fn3
fn1
fn2
end
fn1 ? fn2 : false
Soweit ich das beurteilen kann, setzen Sie die erste Funktion, die Sie ausführen möchten, und so weiter.
Also so etwas wie:
before_filter :fn1, :fn2
def fn1
puts 'foo'
end
def fn2
puts 'bar'
end
Würde ausführen fn1
, dann fn2
.
Hoffentlich hilft das.
:fn1, :fn2
: fn2 wird zuerst aufgerufen.