RailsのDecoretorデコレーターについて
概要
モデルのビジネスロジックとビュー用の表示ロジックを分離するための仕組み
モデルに直接書くと肥大化する「画面表示用の便利メソッド」をまとめる場所
コントローラやビューからは、デコレーターモジュールのincludeでの利用やモデルをラップしたデコレーターを経由して利用する
Railsに標準のデコレーター機能は無い
メリット
モデルが表示ロジックで肥大化するのを防ぐ
ビュー側のコードを簡潔にできる
同じ表示ロジックを複数ビューで再利用可能
テストも表示ロジックだけに絞って書ける
gemについて
デコレーターをサポートするGemとしてActiveDecorator、draperなどがある
ActiveDecorator
デコレーターをmoduleで定義し、オブジェクトにinclude/extendする
既存のクラスをそのまま使えるのでシンプル
draper
デコレーターをclassで定義し、モデルをラップしてdecoratorオブジェクトとして扱う
デコレーターがオブジェクトなのでテストが容易
#Rails