我使用before_action过滤器来调用authenticate,这是一种方法,如果用户没有被授权访问请求的页面,它会将用户重定向回他们的主页.

我想从这个步骤中排除一个页面,只是为了测试.

到目前为止,我所看到的是,我可以使用except来排除某些控制器操作受before_action过滤器的约束,例如:

before_action :authenticate, except: :demo_login

我还可以一次排除多个操作,如下所示:

before_action :authenticate, except [:demo_login, :demo_show]

如何排除特定控制器中的所有操作?

推荐答案

在相关控制器中使用skip_before_action :authenticate.

此方法的格式与before_action相同,因此如果要跳过对特定控制器操作调用:authenticate,请使用:

skip_before_action :authenticate, only: [:show, :index]

也可以使用except:关键字.

Ruby-on-rails相关问答推荐

对Rails进行枚举不允许空值

参数数量错误(给定1个,预期为0个;必需关键字:IO、文件名)-活动存储

发送不调用类或模块中的私有方法

如何将 ActionController::RoutingError 分类为 Sentry 中的错误

Trailblazor 操作 -> 集合 :attribute(has_many 通过关联) 与填充器 -> 如何填充 Reform::Form 形式的 slugs 数组?

如何验证 Rails 中的多态字段关联?

在单个继承表和另一个表中的类之间建立多对多关联

Ruby/Rails 中的类方法与常量

从 Authlogic 迁移到 Devise

如何确定 Rails 是从 CLI、控制台还是作为服务器运行?

Rails 和 OS X:如何安装 rmagick?

mongoid 中 embeds_many 和 has_many 的区别

从 Rails 模型内部访问翻译文件 (i18n)

带有查询字符串参数的 Rails 动作缓存

按周/月/等和 ActiveRecord 分组?

你如何覆盖 form_for 助手中的类名?

rails 获取应用程序根/基本 url

用于在多行上链接调用的 Ruby 约定

ArgumentError:ApplicationController 的副本已从模块树中删除,但仍处于活动状态

为什么 Mac OS X 带有 ruby​​/rails?