デコレーターの導入

デコレーターの導入 [dacoratorとは?] model→decorator→viewのようにmodelとviewの間にdecoratorを挟むことで、modelの内容を装飾してviewに表示できる。 modelの属性を装飾してviewに表示する場合は、そのメソッドをmodel,helper,decoratorいづれかに記載することになるが、以下のように使い分ける。 [decoratorの導入手順] Gemfileに以下を記載

gem "draper"



bundle install

rails generate draper:install ※draperをインストールする

rails generate decorator モデル名 ex)rails generate decorator User ※[app/decorators]ディレクトリにdecoratorのファイルができる。 decoratorファイルに記載があるdelegate_allとは、モデルのメソッドをそのままdecoratorでも使えるようにする。

[app/decorators]ディレクトリのdecoratorのファイルに以下のように記載する。

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.]を入れる。

参考記事:

https://jiro8899.hatenablog.com/entry/2020/02/16/235117

https://study-diary.hatenadiary.jp/entry/2020/08/04/132953

https://tech.mof-mof.co.jp/blog/draper/

https://note.com/kentarotawara/n/n0c1ff2060cf7

https://kurose.me/decorator-draper/