rails concernの使い方
2021.04.04 Ruby on Rails
Railsのconcernについてまとめました。共通のスコープやメソッドをまとめる方法と、application_controllerのエラーハンドルをconcernに切り出して見やすくする例を紹介します。
初めに
railsのconcernについてちょっとまとめたもの
concernとは
concernとはrailsの共通部分をまとめる使い方が一般的で、userモデルでもpostモデルでも使うスコープやメソッドがあった場合にまとめられます。models/concernsにday.rbを作り、module Day で extend ActiveSupport::Concern、included do 内に scope を書きます。user.rb と post.rb で include Day とすれば使えます。moduleの名前はファイル名と同じにします。
ほかの使い方
モデルやapplication_controllerの中身が多くなりすぎて見づらくなる場合、処理をまとめてconcernに入れます。controllers/concernsにerror_handle.rbを作り、rescue_fromやエラー用のrenderメソッドをmodule ErrorHandleとして切り出し、ApplicationControllerでincludeすれば中身がすっきりします。freeze_allのような共通メソッドもconcernにまとめられます。