爲了清楚起見,名稱和對象已被簡化。基本概念保持不變。在rails中跳過before_filter
我有三個控制器:dog
,cat
和horse
。這些控制器全部從控制器animal
繼承。 在控制器animal
,我有一個前過濾器,用戶認證爲這樣:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
在dog
的show
行動,我需要有開放的所有用戶的訪問(跳過驗證)。
如果我要分開來寫認證爲dog
,我可以做這樣的事情:
before_filter :authenticate, :except => :show
但由於從animal
dog
繼承,我沒有訪問控制器專用的行動。在animal
控制器中添加:except => :show
將不僅跳過dog
的show
動作的驗證,還跳過cat
和horse
的驗證。這種行爲是不希望的。
如何跳過show
動作dog
而僅繼續從animal
繼承認證?
'skip_before_filter'似乎已被棄用>> [http://apidock.com/rails/ActionController/Filters/ClassMethods/skip_before_filter#1083-deprecated-moved](http://apidock.com/rails/ActionController/ Filters/ClassMethods/skip_before_filter#1083-deprecated-moved)他們推薦使用'skip_filter',它們一起調用'skip_before_filter','skip_after_filter'和'skip_around_filter'。 – Bachet 2011-05-06 20:34:56
不是..他們只是將該方法移動到另一個類,http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando 2012-06-05 13:54:19
是的,它已被移動 – 2014-05-06 05:46:20