導軌是否做出關於以使前過濾器將與以下兩種用法的執行任何保證:如何指定before_filters執行的順序?
before_filter [:fn1, :fn2]
或
before_filter :fn1
before_filter :fn2
我會很感激的任何幫助。
導軌是否做出關於以使前過濾器將與以下兩種用法的執行任何保證:如何指定before_filters執行的順序?
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 :fn1, :fn2
def fn1
puts 'foo'
end
def fn2
puts 'bar'
end
將執行fn1
,然後fn2
。
希望有所幫助。
我使用Rails 4,即使我的訂單是':FN1,:FN2 ',:fn2首先被調用。 – Reboot 2017-08-21 07:55:46
的before_filter秩序的Rails http://b2.broom9.com/?p=806
過濾器鏈訂貨 http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html
如果你需要保證順序,你可以這樣做:
before_filter :fn3
def fn3
fn1
fn2
end
的過濾器鏈的CheckoutController
不遵循這個順序
:ensure_items_in_cart, :ensure_items_in_stock, :verify_open_shop
相反,它應該是
:ensure_items_in_stock, :ensure_items_in_cart, :verify_open_shop
正是我在找什麼...... @Johnny你是一個安全的生活。非常感謝。 – Surya 2013-05-14 17:22:58
@Sector和JohnnyWoo:你到http://rails.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html的鏈接已經死了。 – Kevin 2013-07-25 16:15:44
在rails 3.2.14上,我得到的過濾器鏈如下::ensure_items_in_stock,:ensure_items_in_cart,:verify_open_shop – Raf 2013-10-04 09:44:58