Rails アプリケーションにはたくさんのコントローラーがありbefore_filter
、さまざまなコントローラーでいくつかのアクションの前に a を使用する必要があります。before フィルターは、これらすべてのアクションの同じコードを実行します。これを実行する必要があるアクションのリストを指定するためのクリーンな DRY 方法 (application_controller
たとえば) はありますbefore_filter
か? すべてのコントローラーで使用しようとしbefore_filer
ましたが(9)、同じコードであるため、これは非常に繰り返しのように見えます。
1 に答える
1
なぜApplicationController
ですか?アプリケーションコントローラーで定義するbefore_filter
と、リクエストごとに実行されます。
今、あなたはそれが反復的に見えると言っていますが、実際にはそうではありません. 実際に言及することbefore_filter
は、他の場所application_controller.rb
で指定する必要のない DRY AKA を表しbefore_filter
ます。
もちろん、9 つのコントローラのすべてが同時に実行されるわけではないのでApplicationController
、推奨される方法です。
class ApplicationController < ActionController::Base
...
before_filter :pre_execute_action
...
end
class MyController < ApplicationController
...
skip_before_filter :pre_execute_action, except: [:methods_for_which_it_should_execute]
...
end
上記のコードを参考にしてみてください
于 2016-08-31T11:50:29.837 に答える