Draperの使い方 まとめ

どうもどハマりエンジニアです。

 

本日はDraperの簡単な使い方について説明するよ。

 

 

まずgemをインストール

gem 'draper'

$bundle install

 

そして、 システムにデコレーター層を追加するために下記のコマンドを実行する

$rails g draper:install

 

指定したモデルに対応したデコレーターファイルを作成する

$rails g decorator User

 

今回はUserモデルのfirst_nameとlast_nameをくっつけて表示させるfull_nameというメソッドを作成したいと思う。

app/decorators/user_decorator.rb

class UserDecorator < Draper::Decorator

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

delegate_all というのは、Userモデルの全部のメソッドを呼び出せるようにするための記述。既存のメソッドを組み合わせて、新しいことをしたい場合に便利。なので、新しく作成したfull_nameメソッドで、Userモデルの last_nameやfirst_nameメソッドを使用することができるのです。objectメソッドは、デコレートしているモデルを参照するメソッド、と理解している。

<%= current_user.decorate.full_name %>

viewにはcurrent_userメソッドが返すオブジェクトに対してデコレータ層full_nameのメソッドを実行している。

 

以上が今回実行したDraperの簡単な使い方についてでした。