Rails5で検索機能を実装してみた

以前からやってみたいと思っていた、検索機能を実装してみました。

環境

ruby 2.3.1
rails 5.1.5

概要

usersテーブル(カラムはname、emailだけ)に対し、nameであいまい検索。

コード

User.rb

class User < ApplicationRecord
  validates :name, presence: true
  validates :email, presence: true

  scope :search_by_name, ->(name) {
    where("name like '%#{name}%'")
  }
end


users_controller.rb

class UsersController < ApplicationController

  def index
    @users = User.all
    if params[:name].present?
      @users = @users.search_by_name params[:name]
    end
  end

//省略

  private
  def user_params
    params.require(:user).permit(:name, :email)
  end

end