#目次
①結論
②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を含むレコードを抽出する、という処理になる。