Ruby on Rails

【Ruby on Rails】gem 'active_decorator' を使ってViewとHelperをすっきり

Railsを書いていて「モデルのstatusごとに違うリンクを表示させたいんだけどなー」みたいなときありませんか?

「Viewに条件分岐書くと汚くなるし、Modelに書くのもちょっと違う。かといって、Modelの情報をHelperに渡して、Helperでごにょごにょやるのもなんだかな」

そんな悩みを解決してくれる、ActiveDecoratorというGemを使ってみた際のメモです。

モデルとビューの橋渡し役 ActiveDecorator

モデルが持っているデータをViewで表示する場合に、Helperでごにょごにょ頑張るのではなくモデルから表示を整形するメソッドを呼び出したい。その表示するためのメソッドをモデルに書いてしまうと、モデルが肥大化してしまう。

モデルはデータベースとのやりとりを疎で扱うのがいいので、新しくDecorator層を作るのが解決方法の一つ。
RailsでDecorator層をカンタンに導入するためのGemがActiveDecoratorです。

ActiveDecoratorをインストール

1. おなじみのbundle install

おなじみの、Gemfile追加からのbundle installです。

gem `active_decorator`

2. generateコマンドを叩きましょ

次に、decoratorファイルを生成する

$ rails g decorator モデル名

このおまじないを唱えると、app/decorator/モデル名_decorator.rbのファイルが生成される

3. decoratorファイルにメソッドを記述

app/decorator/モデル名_decorator.rbに書いていきましょ

decoratorのファイルの中だったら、helperを書くように書けるので便利です
link_toとかhelperの中で書けるのでとっても便利
それでいて、ModelとViewが汚れないのでGood

-Ruby on Rails