0

Rails アプリケーションにはたくさんのコントローラーがありbefore_filter、さまざまなコントローラーでいくつかのアクションの前に a を使用する必要があります。before フィルターは、これらすべてのアクションの同じコードを実行します。これを実行する必要があるアクションのリストを指定するためのクリーンな DRY 方法 (application_controllerたとえば) はありますbefore_filterか? すべてのコントローラーで使用しようとしbefore_filerましたが(9)、同じコードであるため、これは非常に繰り返しのように見えます。

4

1 に答える 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 に答える