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を意識し、可読性やメンテナンス性を上げる。