Techioz Blog

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」モジュールに移動し、それを両方のコントローラーに含めることはできます。詳細はこちらをご覧ください