decoratorの導入

今回はfirst_nameとlast_nameを用いて、フルネームを表記したいため、

full_nameを定義していく。

 

<decoratorとは>

 ・機能を少し付け加えたい場合や、装飾を少し加えたい場合に用いる。

 →全てモデルに書いてしまうとファットになってしまう。

 →decoratorを用いる。

  ・既存の関数やクラスの中身には触れず、外側から機能を追加、

     書き換えたりすることができる。

 

<decorator導入の流れ>

draperをインストール

 ♡Gemfileに

gem 'draper'

 を記載し、bundle installする。

 ♡rails generate draper:install をすると、Draperのインストールができる。

 

decoratorのファイルの作成

 rails generate decorator Userをすることで、

 app/assets/decorator下に、user_decorator.rbというファイルが作成される。

 

user_decorator.rbにメソッドを作成

 delegate_allはファイルを作成した際に既に記入された状態。

class UserDecorator < Draper::Decorator

def full_name
"#{object.last_name} #{object.first_name}"
end
end

 viewにフルネームを表記したいため、full_nameのメソッドを作る。

 表記したい内容は、last_nameとfirst_nameを合わせたものであり、

 真ん中に半角スペースを空けることで、姓と名の間を少し空けることができる。

    object.last_name + ' ' + object.first_nameと記載することもできるが、

    記述量として望ましくないそう。

 

viewに埋め込む

<%= current_user.decorate.full_name %>

    とし、decorateも記入する必要がある。