私が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.
そしてin_production単純です:
def in_production
ENV['RAILS_ENV']=='production'
end
私はそれが実現しますここでは他の手段かもしれませんが、なぜskip_before_filterが条件付きを無視し、before_filterをスキップするように見えるのか不思議です。私は行方不明のものがありますか?
Rails 2.3.9とDevise認証宝石の使用。 – Smudge