ホーム 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~~が宣言されることになります。 

記事を共有

最近人気な記事