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
delegate_all
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の簡単な使い方についてでした。