ATSU Tech Blog

Ruby on Rails, Pythonなどの記事を書いています。

gem draperを使用して、decoratorを導入する方法

目的

gem draperを使用して、decoratorを導入する。 このGemを導入するときに詰まった部分をメモとして残す。

開発環境

Ruby 2.6.4 ・Rails 5.2.3

参考資料

Decoratorの役割とDraperについて Draperの使い方 まとめ Rails Viewの表示のためにDecoratorを用意してHelperとModelを助ける

導入手順

①gem 'draper'をインストールする。

まずはGemをインストールします。

gem 'draper'

以下の2行をターミナルに入力すれば、draperを使うことができます。

$ bundle install
$ rails generate draper:install

②デコレーターを作成

まず、app/decorators/user_decorator.rb を作成します。

$ rails generate decorator User

今回はフルネームを呼び出すメソッドを作っていきます。 last_nameとfirst_nameは、事前にUserモデルのカラムに追加してあります。

class UserDecorator < Draper::Decorator
  delegate_all

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

③ 作ったメソッドをViewファイルで呼び出す。

現在ログインしているユーザー(current_user)をフルネームで表示します。

#メソッドを使いたいViewファイルにて

<%= current_user.decorate.full_name %>

以上の手順でgem 'draper'を使って、decoratorを導入できました。 この流れでエラーが出てしまった場合は、参考資料など見ながら解決してみてください。