0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsでの検索機能実装方法(whereメソッド)

Last updated at Posted at 2021-01-27

#目次
①結論
②ActiveRecordとは
③whereメソッドとは
④whereメソッドの使い方

##①結論
ルーティングを設定し、検索窓のビューを実装し、コントローラーにてActiveRecordのwhereメソッドを使用する

ルーティング
resources :users do
  get :search, on: :collection
end
コントローラ

def  search
 if params[:name] != ""
  @users =  User.where("name LIKE(?)","%#{params[:name]}%") 
else
  @users = User.all
end
検索機能のビュー
<h1>検索機能の実装</h1>
<%= form_with(url: search_users_path, method: :get, local: true)do |form| %>
  <%= form.text_field :name %>
  <%= form.submit :search %>
<% end %>


  <div calss= "contents">
    <% @users.each do |user| %>
       <p><%= user.name %></p>
    <% end %>
  </div>

##②ActiveRecordとは
Rubyのライブラリのひとつで、Rubyのオブジェクト(Object)をSQLに翻訳してリレーショナルデータベース(RDBMS)を操作できる(Mapping)ツールのこと。Railsとデータベース橋渡しの役割をしている。この機能をそれぞれの頭文字をとって、ORMapperと呼ぶ。Railsには、ActiveRecordがデフォルトで組み込まれている。

##③whereメソッドとは
テーブル内の条件に一致したレコードを配列の形で取得できるメソッドのこと

##④whereメソッドの使い方
以下3つのパターンを紹介する
◯完全一致の場合

User.where(id:5)
#idの5が欲しいとき

User.where(name:"キャリア君")
#キャリア君を探したいとき

◯範囲検索(5~10のidのユーザーを取得したいとき)

User.where(id: 5..10)

◯部分一致(文字列)

User.where("name LIKE(?)","%キャリア%")

LIKE句は曖昧な文字列の検索をする時に使用するものでwhereメソッドと一緒に使用する。
name LIKEと書くことでnameカラムを検索、という意味になる。?は次の引数"%hana%"を受け取る場所になる。
?のことろに%◯◯%がそのまま入るイメージ。この場合だと、name LIKE "%キャリア君%"という風になる。%は任意の文字列を指します。まとめると、nameカラムにhanaを含むレコードを抽出する、という処理になる。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?