🐟
[Rails]ActiveDecorator gem
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