🦊
Rails Draperについて(自己学習記録)
Draperとは
DraperはRailsのプレゼンテーション層の役割を担うgem
プレゼンテーション層とはviewとmodelの中間に位置し、viewやmodelで
実装されやすい表示ロジック/フォーマットを記述する役割を担う
こちらのサイトを引用させていただきました
https://qiita.com/jonson29/items/00077b54bb91ed74fdb8
つまり、複雑なメソッドをdecoraterにまとめることでviewやmodelの肥大化を防ぐことができる。
helperとの違い
helperもDecoratorもviewをコーディングしやすくするための仕組みだが、
helperはモデルから独立し直接関係していない描画ロジックを実装するのに用いる
Decoratorは特定のモデルに関連した描画ロジックを実装するのに用いる
使い方
gem 'draper'
bundle install
デコレーターを生成
rails generate decorator User
今回はfull_nameメソッドをデコレータークラスで定義する
class UserDecorator < Draper::Decorator
delegate_all
def full_name
"#{object.first_name) #{object.last_name}"
end
end
viewで使用
<%= @user.full_name %>
補足
delegate_allはdecoratorに存在しないメソッドがコールされた場合にモデルの処理を
実行する機能で、このコードがあることで、Userモデルのメソッドを使用することができる
Discussion