コントローラ "abc"を "除外"したいときは、before_filterの構文は何ですか?before_filterの構文コントローラ "abc"を除きたい場合
例、application_controllerで私が言いたい場合:
before_filter :login_required :except => ["-name of controller-"]
背景 - ただ、実際にユーザーが認証取得ハンドルコントローラを除く全アプリ間で基本認証を望んでいた....
コントローラ "abc"を "除外"したいときは、before_filterの構文は何ですか?before_filterの構文コントローラ "abc"を除きたい場合
例、application_controllerで私が言いたい場合:
before_filter :login_required :except => ["-name of controller-"]
背景 - ただ、実際にユーザーが認証取得ハンドルコントローラを除く全アプリ間で基本認証を望んでいた....
あなたはbefore_filter
が実行すべきではないコントローラに以下の行を置くことができます。
skip_before_filter :login_required
することができますも、 before_filter
は:only
と:except
オプションで無視された方法をspecifiy:
skip_before_filter :login_required, :only => [:login]
例here。
編集:before_filter
構文は
before_filter :login_required, :except => ["-name of the action-"]
あるRailsの4、before_filter
ではbefore_action
でエイリアスされ、そしてskip_before_filter
もskip_before_action
でエイリアスされRails API Docの表情を持っています。
コントローラー名を使用する代わりに、コントローラーがそのフィルターを親から継承することを利用することをお勧めします。それでは、私がお勧めすることは、このようなものです:
# app/controllers/application_controller.rb
class ApplicationController
# no filters here
end
# app/controllers/authenticated_controller.rb
class AuthenticatedController < ApplicationController
before_filter :login_required
end
# app/controllers/some_other_controller.rb
class SomeOtherController < AuthenticatedController
# inherits the before_filter from AuthenticatedController
# use this for most of your other controllers
end
# app/controllers/unauthenticated_controller.rb
class UnauthenticatedController < ApplicationController
# no filters, since this inherits directly from ApplicationController
# use this for the controller that you don't want to check login on
end
これは、コントローラがそれらはむしろ名前の(おそらく脆性)のリストを持つよりも、ログインを確認することになっているかどうかを知ること。