1
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?

【Rails】手動でサービスクラスを定義する方法について

Posted at

記事概要

Ruby on Railsで、サービスクラスを定義する方法についてまとめる

前提

  • Ruby on Railsでアプリケーションを作成している

手順

  1. appフォルダに、servicesフォルダを作成する
  2. app/servicesフォルダに、[サービスクラス名]_service.rbを作成する
    search_tweets_service.rb
    class SearchTweetsService
    end
    
  3. コントローラーまたはモデルに記述している処理を切り出し、サービスクラスの処理として記述する
    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.rb
    class SearchTweetsService
      def self.search(search)
        if search != ""
          Tweet.where('text LIKE(?)', "%#{search}%")
        else
          Tweet.all
        end
      end
    end
    
  4. コントローラーで、定義したサービスクラスを呼び出す
    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
    
  5. コントローラーまたはモデルに記述している処理を削除する
    tweet.rb
    class Tweet < ApplicationRecord
      validates :text, presence: true
    end
    

コントローラー

1
0
0

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
1
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?