記事概要
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 end
search_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
コントローラー