加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – skip_before_filter忽略条件

发布时间:2020-12-16 19:50:31 所属栏目:百科 来源:网络整理
导读:我正在尝试使用skip_before_filter,只有当应用程序处于生产模式. (我不希望我的开发实例是公开的,我希望应用程序自动检测它是什么类型的实例,并且当它不在生产模式时显示登录屏幕).所以我的应用程序控制器有以下一行: before_filter :authenticate_user!,:e
我正在尝试使用skip_before_filter,只有当应用程序处于生产模式. (我不希望我的开发实例是公开的,我希望应用程序自动检测它是什么类型的实例,并且当它不在生产模式时显示登录屏幕).所以我的应用程序控制器有以下一行:
before_filter :authenticate_user!,:except => "sign_in" #redirects to log-in

而显示页面的控制器有这样的一行:

skip_before_filter :authenticate_user!,:only => :show,:if => :in_production
#public pages are public,but only when in production.

而生产只是简单的:

def in_production
    ENV['RAILS_ENV']=='production'
  end

我意识到这里可能有其他的途径,但是我很好奇为什么skip_before_filter似乎忽略了条件,并且总是只跳过before_filter.有没有我失踪的东西?

解决方法

它是一个Rails错误(或至少是一个无证的奇怪行为).在这里跟踪: https://github.com/rails/rails/issues/9703

在这个线程中,您可以找到(扭曲)解决方案.

代替

skip_before_filter :authenticate_user!,:if => :in_production

skip_before_filter :authenticate_user!,:only => :show
before_filter      :authenticate_user!,:unless => :in_production

它为我工作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读