記事概要
Ruby on Railsで、サービスクラスを定義する方法についてまとめる
前提
- Ruby on Railsでアプリケーションを作成している
手順
-
appフォルダに、servicesフォルダを作成する -
app/servicesフォルダに、[サービスクラス名]_service.rbを作成するsearch_tweets_service.rbclass SearchTweetsService end - コントローラーまたはモデルに記述している処理を切り出し、サービスクラスの処理として記述する
tweet.rb
class Tweet < ApplicationRecord validates :text, presence: true def self.search(search) if search != "" Tweet.where('text LIKE(?)', "%#{search}%") else Tweet.all end end endsearch_tweets_service.rbclass SearchTweetsService def self.search(search) if search != "" Tweet.where('text LIKE(?)', "%#{search}%") else Tweet.all end end end - コントローラーで、定義したサービスクラスを呼び出す
tweets_controller.rb
class TweetsController < ApplicationController # 省略 def search # 削除 # @tweets = Tweet.search(params[:keyword]) # search_tweets_service.rbのsearchメソッドを呼び出す @tweets = SearchTweetsService.search(params[:keyword]) end end - コントローラーまたはモデルに記述している処理を削除する
tweet.rb
class Tweet < ApplicationRecord validates :text, presence: true end
コントローラー