在rails 2.8中,我们可以像这样编写skip_before_filter
skip_before_filter :require_login, :only => [:create,:new,:accept]
这意味着,我想将过滤器require_login
仅应用于这些操作[:create,:new,:accept]
,并跳过其他人的过滤器。
但看起来,这种方式在rails 3中是deprecated。并添加了新的skip_filter。我试过这个
skip_filter :require_login, :only => [:create,:new,:accept]
但它不起作用,所以我怎么能在rails 3中这样做。
答案 0 :(得分:15)
这是对skip_before_filter
的错误使用。
要将过滤器require_login
专门应用于操作[:create,:new,:accept]
,并跳过其他人的过滤器,您必须先应用过滤器:
before_filter :require_login
然后,您必须告诉rails跳过此过滤器除了以执行“创建,新建和接受”操作。
skip_before_filter :require_login, :except => [:create,:new,:accept]
您还可以使用skip_filter
,这可以包含before_filter
,after_filter
和around_filter
过滤器:
skip_filter :require_login, :except => [:create,:new,:accept]
在Rails 4.0中,等效方法是:before_action和:skip_before_action。
答案 1 :(得分:11)
skip_before_filter
尚未弃用,see source。
您按预期使用它。
那你怎么推断它不能正常工作?