Skip to content

Railsを三層アーキテクチャから、四層アーキテクチャに変更したい #28

@unknown-neko

Description

@unknown-neko

Rails5以降を把握していないので、Rails7の仕様を読むところからのスタート

MVCの問題点

MVCはFat Model、Fat Controller問題を起こしやすい。初学者ほど顕著に傾向が出る。

4層への変更案

  • ジェネレート時に「module Model名Transaction」を追加する(一般的な名称だとService)
  • Model名Controllerのジェネレート時に、Controllerの中にinclude Model名Transactionを加える

こういったMVTCにすることで、Fat ControllerもFat ModelもTransactionにまとめやすくなる。

なぜ名称がServiceではなく、Transaction?

「一般的な名称だとService」だが、Serviceという名称で過去に導入してみたところ・・・
クラス名称(モジュール名称)だけでは、周りが使い方を察知できなかった。
Transactionであれば、基本情報が受かるレベルであればすぐに使い方は分かる。

Serviceだと、ゴッド化しやすいのでTransactionかAgentにしたい。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions