RunUpwind 发表于 2013-1-14 07:13:06

rails的before_filter,如果except子controller中的action skip_filter

如题,在http://stackoverflow.com/questions/2390178/skip-before-filter-in-rails 找到了答案。
 
问:
I have three controllers: dog, cat, and horse.These controllers all inherit from the controller animal.In the controller animal, I have a before filter that authenticates a user as such:
before_filter :authenticatedef authenticateauthenticate_or_request_with_http_basic do |name, password|    name == "foo" && password == "bar"endend 

In the show action of dog, I need to have open access to all users (skip the authentication).
If I were to write the authentication separately for dog, I could do something like this:
before_filter :authenticate, :except => :show 

But since dog inherits from animal, I do not have access to the controller-specific actions. Adding :except => :show in the animal controller will not only skip authentication for the show action of dog, but also that of cat and horse. This behavior is not desired.
How can I skip the authentication only for the show action of dog while still inheriting from animal?
 
答:
class Dog < Animalskip_before_filter :authenticateend  
<div class="post-text">See ActionController::Filters::ClassMethods for more info on filters and inheritance.
页: [1]
查看完整版本: rails的before_filter,如果except子controller中的action skip_filter