Ruby on Rails 管理者 - ペアになっている管理コントローラー クラス内でアプリケーション コントローラー クラスを統合して再利用する方法はありますか?
概要
同じクラス名のコントローラーが 2 つあります。 1 つはアプリケーション コントローラーから継承し、もう 1 つは AdminController から継承します (非公開の理由により、これをサンプル コントローラーと呼びます)。
class SampleController < ApplicationController
def sample_method
//do stuff
end
end
module Admin
class SampleController < AdminController
def sample_method
//do the same stuff as the above controller's method
end
end
end
通常のコントローラー (最初の非管理者) を管理者サンプル コントローラーのスーパーにする方法はありますか?
今のところインターネット上で「二重継承」の例は見つかりません。また、SampleController の管理バージョンで同じタスクを実行する関数の重複コードを作成したくありません。
これが理にかなっていることを願っています。ここで明らかな無知をお許しください - 私は独学で Ruby プログラマーを学びました :-)
解決策
まず、同じ名前のクラスが 2 つ存在することはありません。 1 つは SampleController という名前で、もう 1 つは Admin::SampleController という名前です。
いいえ、Ruby は多重継承をサポートしていません。ただし、共通の関数を「mixin」モジュールに移動し、それを両方のコントローラーに含めることはできます。詳細はこちらをご覧ください