Rails 3 ways to do skip_before_filter: only

In rails 2.8 we can write skip_before_filter as follows

skip_before_filter :require_login, :only => [:create,:new,:accept] 

which means that I wanted to apply the require_login filter only to these actions [:create,:new,:accept] and skip the filter for others.

But it seems to be thus deprecated in rails 3. And a new skip_filter is added. i tried this

  skip_filter :require_login, :only => [:create,:new,:accept] 

but it does not work, since I can do it in rails 3.

+8
ruby ruby-on-rails
source share
2 answers
  • skip_before_filter not outdated, see source .

  • You use it as expected.

So, how did you conclude that it is not working properly?

+11
source share

This is a misuse of skip_before_filter .

To apply the require_login filter exclusively to [:create,:new,:accept] actions and skip the filter for others, you must first apply the filter:

 before_filter :require_login 

Then you must specify the rails to skip this filter except for the actions "create, new and accept".

 skip_before_filter :require_login, :except => [:create,:new,:accept] 

you can also use skip_filter , which allows you to enable filters before_filter , after_filter and around_filter :

 skip_filter :require_login, :except => [:create,:new,:accept] 

Link: Rails 3.2 Guide

In Rails 4.0, equivalent methods are: before_action and: skip_before_action.

Link: Rails 4.0 Guide

+14
source share

All Articles