In rails 2.8 we can write skip_before_filter like this
skip_before_filter :require_login, :only => [:create,:new,:accept]
which means, i wanted to apply the filter require_login
only to these actions [:create,:new,:accept]
, and skip the filter for others.
But it seems, this way is deprecated in rails 3. And new skip_filter is added. i have tried this
skip_filter :require_login, :only => [:create,:new,:accept]
but its not working, so how can i do this in rails 3.
That is an incorrect use of skip_before_filter
.
In order to apply the filter require_login
exclusively to the actions [:create,:new,:accept]
, and skip the filter for others, you must first apply the filter:
before_filter :require_login
Then you must tell rails to skip this filter except for actions "create, new and accept".
skip_before_filter :require_login, :except => [:create,:new,:accept]
you can also use skip_filter
, which allows you to include before_filter
, after_filter
, and around_filter
filters:
skip_filter :require_login, :except => [:create,:new,:accept]
Reference: Rails 3.2 guide
In Rails 4.0, the equivalent methods are :before_action, and :skip_before_action.
Reference: Rails 4.0 guide
skip_before_filter
has not been deprecated, see source.
You're using it as expected.
So how did you deduce it's not working properly?
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