active_decorator はよく使ってるけど draper は README 読んだだけの状態で比較しています。
active_decorator
メリット
- 実装が比較的シンプル
- 使い方もシンプル
- 自動的に model を decorate してくれる
デメリット
- decorator のメソッドを生やす条件が限られている
- controller 中にインスタンス変数として定義する
- partial template の引数として渡す
- なので、インスタンス変数の関連オブジェクトに対して decorater を適用するのが場合によっては面倒
draper
メリット
- 関連オブジェクトへの対応がある
- 複数の decorater を使い分けたり、decorater に変数を渡して挙動を変更したりできる
- collection に対しても decorator を設定できる
デメリット
- 基本的に、毎回明示的に decorate するためのメソッドを書く必要がある
- active_decorator と比較して覚えることが多い
どっちを使ったらいいか
ケースバイケース。draper の方が利用できるシーン自体は多そうだけど、学習コスト高めですね( ˘ω˘)"