はじめに
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ディレクトリ配下に作るなど、ケースごとに汎用的に使えるのでとても便利になるとおもいます!