Programming Journal

学習したことの整理用です。

decoratorを導入する。

decoratorとは

viewを装飾するメソッドを追加したいが、モデルに書くとファット化してしまうため、decoratorに記述する。 modelとviewの間にdecoratorを挟むて感じ(たぶん)

早速実装

今回は、Decorator内でfull_nameというメソッドを定義して、 姓名をview側で表示できるようにします。

参考:

github.com

draperをインストールする。

Gimfileに追記してbundle install

gem 'draper'
rails generate draper:install

Draper がインストールされた

rails generate decorator User(モデル名)

UserDecoratorが作られます。

Decorator内にメソッドを記入。

user_decorator.rb

class UserDecorator < Draper::Decorator
  delegate_all

  def full_name
    "#{object.last_name} #{object.first_name}"
  end
end
View側でdecoratorのメソッドを呼び出す
<%= current_user.decorate.full_name %>

.decorate

をつけること。

※サーバーを再起動させないと反映されない。(10分くらいロスした…)