個人的railsで好きな設計

投稿者:

Decoratorを使う

draperでいい

https://github.com/drapergem/draper

https://qiita.com/mmaumtjgj/items/50c8ac82ca5583cac254

View用のロジックを切りはなせてModelがすっきりする

ModelだけじゃなくてCollectionもデコレートできるので

rspecもシッカリ書く。

kaminari(ページャ)と併用する場合は設定が必要

https://github.com/drapergem/draper#using-pagination

Interactorを使う

https://qiita.com/verdy89/items/00a2992a9a62cacec00e

https://github.com/collectiveidea/interactor

ServiceObjectみたいなやつ

決まりがあるのでチームで書き方がズレにくい

1つの動きをするInteractorとそれをまとめて実行するOrganizerがあり、共通の機能とか作っておけばOrganizerに書くだけで組み込めて便利

自分はCreate, Update, Deleteで使います

命名は誰が何をするかで統一するとわかりやすい(アクターごとにディレクトリあるほうがいいのかもしれません)

こんなイメージです

# システムが期限ぎれデータを削除
SystemRemoveExpiredDataOrganizer
# ユーザーがデータを作成
UserCreateDataOrganizer
# 管理者がデータを編集
AdminEditDataOrganizer

使いにくかったりめんどい所はあるけどinteractorイイと思ってます

そうするとModelがきれいになる

この方針でいけばModelには以下の記述が残る

・relation

・validation

・read系のクエリとかscopeとか

・ビジネスロジック

readも分離できたほうが気持ちいっすかね?

babu
babu

その辺はまだまだ勉強中です

おわり

え、そんだけ?

すいません思いついたら足します

babu
babu

便利なgem、機能、設計があったら教えてくれよな

パーフェクト Ruby on Rails 【増補改訂版】