whereメソッドとLIKEの説明
whereメソッドとは、DBに対して任意の条件で検索して、データを取得するためのメソッド。
LIKEは、曖昧検索を行う仕組み。
ここでいう曖昧検索とは、「文字列が"a"ではじまる単語」とか「"06"で始まる電話番号」などの曖昧な表現を検索する仕組みです。
まず前提として、usersテーブルから特定の文字列で始まるユーザー名を検索しています。
このコードはコントローラに記述されていて、リクエストで入力された値がparams[:keyword]で送られてきています。
以下のコードを見ながら説明します
@users = User.where("name LIKE ?", "%#{params[:keyword]}%")
三段階にわけて説明します。
①User.where
モデル名.whereとすることで、そのモデルのテーブルを検索するよう指示を出します。
②whereの第一引数 "name LIKE ?"
まずLIKEの前で、検索するカラムを指定します。ここではnameカラムを検索するようにしています。
LIKE ? で「曖昧検索しますよ」と宣言します。
ちなみに ? はプレースホルダと言うもので、第2引数の値を「?」へ置き換えるための目印です。
③whereの第二引数 "%#{params[:keyword]}%"
{params[:keyword]}で入力された文字列を受け取っています。%は正規表現で0文字以上の任意の文字列という意味です。前後に%を記入することで、もし文字列"a"が入力されていれば、「"a"を含む全ての文字列」という意味になります。
このように、whereやLIKEを使って特定の条件を指定することで、ほしい値のみを取り出して使用することができます。