Rails 3做skip_before_filter的方式,只有

Ram*_*Vel 10 ruby ruby-on-rails before-filter

在rails 2.8中,我们可以像这样编写skip_before_filter

skip_before_filter :require_login, :only => [:create,:new,:accept]
Run Code Online (Sandbox Code Playgroud)

这意味着,我只想将过滤器 require_login应用于这些操作[:create,:new,:accept],并跳过其他人的过滤器.

但似乎这种方式在rails 3中弃用.并添加了新的skip_filter.我试过这个

 skip_filter :require_login, :only => [:create,:new,:accept]
Run Code Online (Sandbox Code Playgroud)

但它没有工作,所以我怎么能在rails 3中做到这一点.

Dou*_*las 15

这是一个错误的使用skip_before_filter.

要将过滤器require_login专门应用于操作[:create,:new,:accept],并跳过其他过滤器,必须先应用过滤器:

before_filter :require_login
Run Code Online (Sandbox Code Playgroud)

然后你必须告诉rails跳过这个过滤器,除了动作"创建,新建和接受".

skip_before_filter :require_login, :except => [:create,:new,:accept]
Run Code Online (Sandbox Code Playgroud)

你也可以使用skip_filter,它允许你包括before_filter,after_filteraround_filter过滤器:

skip_filter :require_login, :except => [:create,:new,:accept]
Run Code Online (Sandbox Code Playgroud)

参考:Rails 3.2指南

在Rails 4.0中,等效方法是:before_action和:skip_before_action.

参考:Rails 4.0指南


apn*_*ing 11

那你怎么推断它不能正常工作?