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
⇨ 入力フォームを簡単に生成することができるヘルパー。
DecoratorとHelperの違い
helperもDecoratorもビューを書きやすくするための仕組みという点では共通点がある。しかし2つの違いとして
・helperはモデルから独立し直接関係していない描画ロジックを実装するのに用いる。
・Decoratorは特定のモデルに関連した描画ロジックを実装するのに用いる。
あるいは、両者の違いについて、このように解釈することもできるかと思います。
- Decoratorはインスタンスに固有の挙動を持たせたいときに使う。
- Helperは全てのビューで共通の挙動を実現したいときに使う。
参考した記事
以下、サイト記事が非常に参考になりました。
Railsについて引き続き学習を続けていきます。同じくRails学習されている方はよければ参考にしてみてください。