モジュールの分割と配置
- モデル (models)
- ビュー (views)
- コントローラー (controllers)
- ヘルパー (helpers)
- ジョブ (jobs)
- メーラー (mailers)
- タスク (tasks)
- テスト (test)
- ライブラリ (lib)
- アセット (assets)
- 関心 (concerns)
- デコレーター (decorators)
参考:
Rails 共通部分を切り出す (View, Controller, Model) メモ – Qiita
ヘルパー (helpers)
コントローラーから使う。(helpers
が全てのヘルパーを含む。)
helpers.helper_method
ビューから使う。(コントローラーと同名のヘルパーモジュールのみが自動的に読み込まれる。)
<% helper_method %>
それ以外の場所 (モデルなど) から使う。
ApplicationController.helpers.helper_method
参考:
Helper を使ってより DRY な view を書こう – Qiita
view から使える helper はデフォルトで Controller 名と同じやつ – Qiita
モデルからヘルパーに定義したメソッドを呼び出す – teratail
config.action_controller.include_all_helpers
全てのヘルパーがどのコントローラーからでも呼び出せる。(デフォルト)
config.action_controller.include_all_helpers = true
参考:
include_all_helpers について | Lチカ開発ブログ
各 helper が全ての view から読み込めてしまうのを禁止する – Qiita
ビューヘルパーのメソッド名が重複したので、私なりのヘルパー分類方法を考察してみた。| komiyak’s tech blog
Action Controllerを設定する | Rails ガイド [公式]
ActiveSupport::Concern
- クラスメソッドの定義:
module ClassMethods ... end
included do ... end
- 多段的な依存関係の解決
ActiveSupport::Concern
を使いたいモジュール内で extend
する。
module A extend ActiveSupport::Concern end
参考:
ActiveSupport::Concern の存在理由 – Qiita
ActiveSupport::Concern とは – Qiita
concerns ディレクトリについて | haayaaa’s diary
Controller と View の共通処理を Concern に書いた話 | Ruby と仲良くなりたい
Ruby on Rails で Concerns を利用してControllerの処理を共通化する | ゼロイチ
ActiveSupport::Concern の使い方としくみ – Qiita
ActiveSupport::Concern と、Module#concerning – Qiita
ActiveSupport::Concern でハッピーなモジュールライフを送る | TECHSCORE BLOG
Rails 4.1.0 で追加された Module#concerning と関心事の分離 | TECHSCORE BLOG
リファクタリング
参考:
肥大化した ActiveRecord モデルをリファクタリングする7つの方法 翻訳 | TechRacho
Tips
参考: