0
0

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 3 years have passed since last update.

【Rails】gem active_decoratorでコードを綺麗にまとめる

Last updated at Posted at 2021-01-17

背景

・カラムの合計値や平均値といった計算をviewに書いていると、ごちゃごちゃしてきて読みにくくなってきたため。
・viewに書くのか、controllerに書くのか問題の解決のため

導入

まずはgemfileに追記します。

gem 'active_decorator'

bundle installします。

$ bundle install

decoratorファイルの生成

次に、decoratorファイルを作ります。
今回はscoreというモデルに関するものです。
scoreの部分は好きな名前にして下さい。

$ rails g decorator score

そうすると、このようなファイルを生成してくれます。
app/decorators/score_decorator.rb

今回はゴルフのスコアだったので、18Hの合計を計算させます。

module ScoreDecorator
  def total_score
    format('%+d', hole1_score.to_i + 
                  hole2_score.to_i + 
                  hole3_score.to_i +
              ・
              ・
              ・
                  hole18_score.to_i)
  end
end

viewで出力

これでviewがすっきりしました!

  <% @scores.each do |score| %>
        <%= score.total_score %>
  <% end %>
0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?