LoginSignup
1
1

More than 5 years have passed since last update.

RailsのモデルでModuleを使うと、ビジネスロジックとデータ永続化の観点でファイルを分割できてとてもシンプル

Last updated at Posted at 2016-09-17

はじめに

Railsプロジェクトでは、モデルがシンプルなことはとても価値があります。
しかし、モデルは役割が大きいため複雑になりがちです。

そこで、ビジネスロジックと永続化という観点からコードを分割して、
シンプルなプロジェクトを作ってみます。

たとえば、Clientモデルを作りたいときは、以下のようになります

データの永続化 app/models/client.rb

こちらはモデルの定義を書きます。
後述するビジネスロジックがうまく働くようにするために、データの永続化のみ記述

  • データの永続化
    • belongs_toなどのリレーション
    • バリデーション
    • Update, Create
    • スコープ
class Client < ActiveRecord::Base
  include Logic::Client
  belongs_to ...
  validate ...
  scope ...
end

おそらく20行ぐらいの短いコードで済むはずです。

ビジネスロジック 

app/models/logic/client.rb

ビジネスロジックはこっちに

class Logic::Client < Logic::Base
  # クライアントのビジネスロジック
end

app/models/logic/base.rb

class Logic::Base
  # 共通でつかうビジネスロジック
end

まとめ

今回はビジネスロジックをサブディレクトリに切ることをしてみましたが、
同じ要領でCSV出力のためのメソッドをreportsディレクトリ配下に作るなど、ケースごとに汎用的に使えるのでとても便利になるとおもいます!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1