Names and objects have been simplified for clarity's sake. The basic concept remains the same.
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 :authenticate def authenticate authenticate_or_request_with_http_basic do |name, password| name == "foo" && password == "bar" end end 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 behaviour is not desired.
How can I skip the authentication only for the show action of dog while still inheriting from animal?
class Dog < Animal skip_before_filter :authenticate, :only => :show end See ActionController::Filters::ClassMethods for more info on filters and inheritance.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With