2

があれば、OrdersControllerこのようにクラスを定義できますか?

class OrdersController < ActionController::Base
  # stuff
end

Rails の足場を生成するとき、これが定義されているように見える唯一の場所はApplicationController(application_controller.rb)です。私が作成した他のコントローラーには、次のようなものがあります。

class OrdersController < ApplicationController
  # stuff
end

最初のものを使用するのは正しいですか?その場合?私はこれに対する良い答えを見つけることができないようです。

4

2 に答える 2

3

技術的には可能ですが、お勧めしません。

読む: http://api.rubyonrails.org/classes/ActionController/Base.html

以下のページから引用:

デフォルトでは、Rails アプリケーションの ApplicationController のみが ActionController::Base から継承されます。他のすべてのコントローラーは、ApplicationController から継承します。これにより、リクエスト フォージェリ保護や機密性の高いリクエスト パラメータのフィルタリングなどを設定するための 1 つのクラスが提供されます。

ActionController::Base から直接継承することもできます。これは単なるクラス継承のケースです。ここで ActionController::Base は抽象クラスのように機能します。

于 2014-04-22T04:19:14.233 に答える
1

はい、あなたが観察したように、 ApplicationController の親クラスである ActionController::Base からコントローラークラスを確実に派生させることができます。

ApplicationController からの派生は、アプリケーションの名前空間を提供するため、推奨されます。すべてのアプリ コントローラーはそこから派生し、すべてのアプリ コントローラーで共有したいすべての共通コントローラー メソッドがそこに入ります。

したがって、ApplicationController のメソッドを継承しないコントローラーを作成する場合は、そのコントローラーの ActionController::Base から直接継承できます。

関連する EdgeGuide on Controllers を確認していない場合に備えて: http://edgeguides.rubyonrails.org/action_controller_overview.html

于 2014-04-22T04:18:52.563 に答える