3つのオプションがありますが、もっとも簡単なのはアプリケーションコントローラです(もっとも汚れていますが)。他の2つのオプションは共有の親コントローラです
class FooController < FooBarParentController
# code here
end
class BarController < FooBarParentController
# code here
end
これらのコントローラの関連性に依存します。
最終的な解決策は、必要な共有コードは、アドホックコントローラの一握りのためにある場所ですモジュール
module FooBarModule
extend ActiveSupport::Concern
included do
# class level code
# before_filter ....
end
module ClassMethods
# all class methods here
end
# instance methods here
end
ある、または既に上記の継承を使用している場合、このコードはなく、かなりのんこのサブセットに適合します(したがって、複数の継承をエミュレートしようとします)。
この有益な回答をいただきありがとうございます。最後の解決策は私にとって最も柔軟に思えるので、私はこれを試してみたいと思います。私はこのコードをどこに置くべきか少し説明できますか(lib-folderのモジュールにありますか?) – user573335
私は個人的にコントローラフォルダに入れます。 –
このアプリケーションに特に関係する場合は、appフォルダー(おそらく 'modules'サブディレクトリー)の下に置いてください。 libフォルダは、アプリケーション固有のユーティリティではありません。 –