モジュールの分割と配置

  • モデル (models)
  • ビュー (views)
  • コントローラー (controllers)
  • ヘルパー (helpers)
  • ジョブ (jobs)
  • メーラー (mailers)
  • タスク (tasks)
  • テスト (test)
  • ライブラリ (lib)
  • アセット (assets)
  • 関心 (concerns)
  • デコレーター (decorators)

参考:

Rails でロジックを書く場所を意識する – Qiita

Rails 共通部分を切り出す (View, Controller, Model) メモ – Qiita

ヘルパー (helpers)

コントローラーから使う。(helpers が全てのヘルパーを含む。)

helpers.helper_method

ビューから使う。(コントローラーと同名のヘルパーモジュールのみが自動的に読み込まれる。)

<% helper_method %>

それ以外の場所 (モデルなど) から使う。

ApplicationController.helpers.helper_method

参考:

Helper を使ってより DRY な view を書こう – Qiita

helper 基本 – 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

ヘルパの自動読込の抑止方法 | DoRuby

ビューヘルパーのメソッド名が重複したので、私なりのヘルパー分類方法を考察してみた。| 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

concern の使い方 – Qiita

ActiveSupport::Concern と、Module#concerning – Qiita

ActiveSupport::Concern でハッピーなモジュールライフを送る | TECHSCORE BLOG

Rails 4.1.0 で追加された Module#concerning と関心事の分離 | TECHSCORE BLOG

リファクタリング

参考:

肥大化した ActiveRecord モデルをリファクタリングする7つの方法 翻訳 | TechRacho

コントローラとモデルをリファクタリングする | @IT

Tips

参考:

Controller に関する Tips | 酒と涙とRubyとRailsと

オブジェクト指向 Rails しばしば出てくる3つの悩みを解決する。- Qiita

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です