Gem 'draper'を使ってDecoratorを導入
Decoratorとは
ソフトウェアデザインパターンの1つで、既存のオブジェクトに新しい機能や振る舞いを動的に追加するもの
ModelやHelperでもよさそうだが
・Modelに何でもかんでも詰め込むのはよくない(FatModel対策)
・ModelにはDBにアクセスするような処理のみを記載することで肥大化を防ぐ
・HelperはModelから独立し直接関係していない描画ロジックを実装するのに用いる
・Decoratorは特定のモデルにがっつり関連した描画ロジックを実装するのに用いる
Decoratorというデザインパターンを導入することで、ビューファイルにロジックを記述しないといったことができ、ビューをすっきりさせる
Gem 'draper'をインストール
gem 'draper'
でbundle install
さらに
$ rails g draper:install
でインストール完了。
Decoratorの作成
$ rails g decorator モデル名
とすることで指定したモデルに対応したDecoratorを作成 中にメソッドを記述してViewで呼び出せる
class モデル名Decorator < Draper::Decorator delegate_all def メソッド名 end
オブジェクト.decorate.メソッド名
まとめ
役割分担させることでDRYを意識し、可読性やメンテナンス性を上げる。