dev/mom0tomo

技術メモ

Decorator Helper 違い

Helperに書かれたメソッドをDecoratorに切り出そうとして、「引数どうするんだっけ」と思った。

Helperだけ、Decoratorだけ0-1で書くときはそれほど迷わないことでも、リファクタリングなど2つ同時に作業するとき意外と迷う。

改めてまとめてみた。

読んだもの

tech.misoca.jp qiita.com izumin.hateblo.jp

学んだこと

Helperとは

  • ViewをよりシンプルにDRYに書くためのモジュール

    • View以外もhelpできるが、基本的にはViewをhelpする(ViewHelperと言ったりする)

    • rails g controllerを実施した際に作成される

Helperの例

module MembersHelper
  # 会員のフルネームを取得する
  def member_full_name(member)
    member.first_name + ' ' + member.last_name
  end
end

Decoratorとは

  • Viewと対応するModelごとに作れる

    • モデルの属性にアクセスする際に変数を介する必要がない
  • Controllerで宣言されたインスタンス変数すべてにdecorateメソッドを適用する

Decoratorの例

moduleMemberDecorator
  # 会員のフルネームを取得する
  def full_name
    first_name + ' ' + last_name
  end
end