1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】DecoratorとHelperの特徴・違い

Posted at

Decoratorとは?

  • デザインパターンの一つである。
  • デザインパターンとは、汎用的な設計パターンのことで、いろんなプログラムで再利用できるのが特徴。
  • Decoratorはインスタンスに対して動作するため、各インスタンスに固有の挙動を持たせることができる。
  • draperというgem(ライブラリ)やActive_Decoratorを用いることで使用できる。

Decoratorの使用例

  • モデルとビュー、どちらにも記述できるロジックがある場合に、あいだにDecoratorを定義する事で、モデルをスリムにできる。
  • つまり、Fatモデルの解消などの効果がある。
  • 例えば、日付フォーマットを変更するロジックを実装する際などに利用できる。
  • モデル・ビュー、どちらにも記述することは可能だが、Decoratorを間に定義し、役割を分散させることでコードをスッキリできる。

詳しいコードはこちらの記事が参考になります。
【Rails入門】ViewとModelの間にDecorator(Draper)を置く

Helperとは?

  • RailsにおけるHelperは、ビューで使うための共通のメソッドを定義するために使われる。
  • Helperは全てのビューから呼び出すことができるのが特徴である。
  • モジュールの一つである。
  • Webアプリケーションの開発において、様々なhelperが使用されている。

Helperの使用例

ヘルパーにはデフォルトで多く定義されているものがあります。

  • content_for ⇨ Webサイトのタブに表示させるタイトルを動的に表示させる。
  • content_tag ⇨ HTMLタグをViewファイルに直接入力することなくHTMLコードを生成する。
  • form_with ⇨ 入力フォームを簡単に生成することができるヘルパー。

参考:
【Rails入門説明書】helperについて解説

【Rails入門】helperの使い方まとめ

DecoratorとHelperの違い

helperもDecoratorもビューを書きやすくするための仕組みという点では共通点がある。しかし2つの違いとして
・helperはモデルから独立し直接関係していない描画ロジックを実装するのに用いる。
・Decoratorは特定のモデルに関連した描画ロジックを実装するのに用いる。

引用:【Rails】decoraterの使い方

あるいは、両者の違いについて、このように解釈することもできるかと思います。

  • Decoratorはインスタンスに固有の挙動を持たせたいときに使う。
  • Helperは全てのビューで共通の挙動を実現したいときに使う。

参考した記事

以下、サイト記事が非常に参考になりました。

Railsについて引き続き学習を続けていきます。同じくRails学習されている方はよければ参考にしてみてください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?