ActiveDecoratorを導入したきっかけ
- Helperにグローバル関数っぽいメソッドを追加するのが嫌だ
- Modelに表示に関するメソッドを増やすのが嫌だ
ActiveDecoratorのGemをいれる
gem 'active_decorator'
amatsuda/active_decorator
https://github.com/amatsuda/active_decorator
Decoratorファイルを作る
普通に作ってもいいですがgeneratorが用意されています。
rails g decorator user
/app/decorator/user.rb
というファイルが作られます。このモジュールは自動でUserモデルにMix-inされます。(しかもViewのコンテキストの時だけ!)
例
公式にもあるサンプルです。姓と名を繋げてフルネームにするとか、linkのメソッドを追加したりしていますね。
# app/decorators/user_decorator.rb
module UserDecorator
def full_name
"#{first_name} #{last_name}"
end
def link
link_to full_name, website
end
end