質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

受付中

railsでのslim controller、fat modelの実現方法について

oeiqgfodgfhps
oeiqgfodgfhps

総合スコア35

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0評価

0クリップ

185閲覧

投稿2022/01/11 04:05

お世話になっております。
現在railsでアプリを作っているのですが、Controllerに下記のような処理があります。railsのような MVCフレームワークではcontrollerをなるべくスリムにして、モデルやヘルパーにビジネスロジックを詰め込んだほうがいいという話を聞いたのですが、具体的な実現方法がわかりません。
自分の所感としては、モデルに入れる処理は検索系の処理や、DBに関わるビジネスロジックだと思っています。しかし、日付のフォーマットや下記のコードのように、データベースのある値を集計して、合計を出す処理(~~_amountの部分です。)などはどこに書けばいいのでしょうか??

ruby

def index @wdays = %w[日 月 火 水 木 金 土] if params[:year_month] inputs = params[:year_month][0].split('-').map(&:to_i) @start_date = Date.new(inputs[0], inputs[1], 1) @end_date = Date.new(inputs[0], inputs[1], -1) @month = inputs[1] else day = Date.today @start_date = Date.new(day.year, day.month, 1) @end_date = Date.new(day.year, day.month, -1) @month = day.month end @data = [] restraint_amount = 0 work_amount = 0 break_amount = 0 (Date.parse(@start_date.to_s)..Date.parse(@end_date.to_s)).each do |date| @date = date record = current_user.attendances.where(work_in: date.all_day).first if record restraint_amount += record.restraint_time work_amount += record.work_time break_amount += record.break_time end record ||= current_user.attendances.build @data.append record end @restraint_data = time_to_view_data(restraint_amount) @work_data = time_to_view_data(work_amount) @break_data = time_to_view_data(break_amount) end # ruboc

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。