🚀

RailsにおけるServiceとhelperについて

2024/03/24に公開

はじめに

Railsでは、Serviceオブジェクトとhelpersは、異なる役割を果たすコンポーネントです。

Serviceオブジェクト

ビジネスロジックを書く時に、モデルやコントローラから分離するのに役立ちます。
特に、ロジックが複雑でまたは再利用される可能性がある時にいいみたいです。
コントローラーやモデルにロジックが増えると、コードが複雑になるので、
そのためにServiceオブジェクトを使います。
そして一つの具体的な機能や責務に焦点を当てて、コードが簡潔でテストしやすくなります。

# app/services/user_registration_service.rb
class UserRegistrationService
  def initialize(user_params)
    @user_params = user_params
  end

  def register_user
    # ユーザー登録ロジック
  end
end

ヘルパーメソッド:

viewのための補助機能で、viewが複雑になりすぎず、コードが再利用できます。
ビューで表示やフォーマットに関する機能を提供します。

module ApplicationHelper
  def format_date(date)
    date.strftime("%Y-%m-%d")
  end
end

最後に

両者の使い道です。

1.シンプルなビュー関連の機能はヘルパーメソッドで提供
2.ビジネスロジックが複雑で、または再利用可能な場合は、Serviceオブジェクトを使用

ヘルパーメソッドは主にビューで使用され、
Serviceオブジェクトはモデルやコントローラから呼び出されることが一般的です。

これらのルールは厳格ではなく、プロジェクトの要件によって異なります。

資料

https://qiita.com/yukiyoshimura/items/f0763e187008aca46fb4

Discussion