ruby-on-rails – skip_before_filter忽略条件

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – skip_before_filter忽略条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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

它为我工作

猜你在找的Ruby相关文章