Rails4でconcernsを使ってみる

Railsでロジック部分をモデルに書くようにしているとモデルがFatになってきます。
Rails4では、そういう場合にconcernsにコードをうまく分割してモデルをスリムにすることができます。

この方法はRails3でも出来るのですが、Rails4からプロジェクト生成時にconcernsディレクトリがデフォルトで生成されます。分割したい場合はこちらへ、という意図を感じます。

では感じのコードです。Userモデルのあるインスタンスメソッドとクラスメソッドを分離するとします。
concerns以下にTestModuleという名前で切り出すとしましょ

module TestModule
  extend ActiveSupport::Concern
 
  def hello
  end

  module ClassMethods
     def select_food
        
     end
  end
 
end

で、userモデルの方では

class User
  include TestModule
end

以上になります。Userモデルが随分すっきりしましたね。