Draperを使ったdecoratorの実装方法

RaislでFat Modelにならないように、decoratorに表示に関するメソッドをまとめておく方法の紹介です。

decoratorを実装するときに使われるgemとして

  • Draper
  • ActiveDecorator

が挙げられます。

今回はDraperを使った方法です。

Draperのインストール

Gemfileにdraperを追記してbundle installします。

gem 'draper'

続いて、Railsアプリにdraperをインストールします。

rails generate draper:install

これでDraperのインストール完了です。

Decoratorの作成

Decoratorを実装したい対象モデルにrails gでdecoratorを作成します。今回はUserモデルに実装する例です。

rails generate decorator User

Decorator内で、姓と名を1つのメソッド(full_name)を実装してみます。

class UserDecorator < Draper::Decorator
  delegate_all

  def full_name
    object.last_name + " " + object.first_name
  end

end

View側でdecoratorのメソッドを呼び出す

Decorator内で作成したメソッドは下記のようにview側から呼び出すことができます。

<%= current_user.decorate.full_name %>

参考:drapergem/draper

Ruby on Railsをこれから本格的に勉強したい人は「エンジニアになるための600時間のプログラミング学習に耐え抜くコツ」という記事がおすすめです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする