🐟

[Rails]ActiveDecorator gem

2021/10/16に公開

ActiveDecoratorとは

Decoratorを実現するためのgemです。

Railsのプレゼンテーション層の役割を担います。

プレゼンテーション層とはviewとモデルの中間に位置し、モデルやビューに実装されやすい表示ロジック/フォーマットを記述する役割を担います。

似たgemにdraperというものもあります。

導入

gemfile

gem 'active_decorator'
bundle install

使い方

rails gコマンドで存在するモデルに対して、Decoratorを作成します。

rails g decoratore user

すると、

app/decorators/user_decorator.rb

というファイルが生成されていますので、View向けのメソッドを定義します。

module UserDecorator
  def full_name
    first_name + last_name
  end
end

view内で呼び出し

@user.full_name

view以外で呼び出し

ActiveDecorator::Decorator.instance.decorate()で引数で渡したものを引数のクラスの名前のデコレーターファイルを適用(デコレート)します。

user = ActiveDecorator::Decorator.instance.decorate(User.find(1))
user.full_name

Discussion