その他
    ホーム 技術発信 DoRuby ruby on railsのActionControllerにモジュールでbefore_filterを実装する方法

    ruby on railsのActionControllerにモジュールでbefore_filterを実装する方法

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    railsのコントローラーにmoduleをinlcudeする時、

    moduleにbefore_filterを書いても、AplicationControllerを

    継承していないのでエラーが出ます。

    moduleで共通化してるわけですから、before_filterもmodule側で

    済ませちゃいたいですよね。

     というわけでやり方です。

    コントローラと違って、モジュールはActionControllerを継承してないことが

    原因でエラーが出ているので、コントローラー側で定義してしまえばエラーが

    出ません。

    じゃあ、インクルード後に、インクルードしたコントローラ自身に定義する様

    書いてあげましょう。

    module NantokaModule
    def self.included(base)
    base.class_eval{
    before_filter :filter_name
    }
    end
    end
    self.includedというメソッドは、moduleをincludeした時に呼び出されるメソッドです。
    で、baseは、呼び出した側のクラスが入ってきますので、そちらに対して、class_evalを
    実行します。
    そうすると、クラスにbefore_filter~~が宣言されることになります。 

    記事を共有
    モバイルバージョンを終了