こんにちわ、Masaです。久しぶりに投稿する気がします。
今回は私が普段開発で使っているフレームワークであるRailsのかなり基礎的な部分を紹介しようと思います。これからRailsを始める人向けなので参考になる人は少ないので温かい目で見てくださると助かります。
find
findはデータを見つけるメソッドです。keyはidで固定されてます。Railsが使用されているアプリケーションでは見ないことはほぼないようなメソッドですね。基礎中の基礎ですね。
Hoge.find(params[:id])
Hogeモデルのidがパラメータ内の数値で検索し、該当するデータを一つだけが抽出してくれます。
find_by
find_byはfindと同じくデータを見つけるメソッドですが、keyは自分たちで決めることができます。また、findとは違い、複数条件をつけることができますのでfindよりも汎用性も高いです。
Hoge.find_by(status: 1)
Hogeモデルのstatusが1のものを1つだけ抽出してくれます。findよりも最近はfind_byを使うことの方が多いです。
where
whereは複数のデータを抽出してくれるメソッドです。find_byと同様に複数条件で検索することができます。また、範囲検索も部分検索もできるのでかなり汎用性高いです。
Hoge.where(status: 1)完全検索
Hoge.where(id: 1..3)範囲検索
Hoge.where("name LIKE ?", "%foge%")部分検索
一つ目はHogeモデルのstatusが1のものを全て抽出してくれます。二つ目はHogeモデルのidが1~3からのデータを抽出してくれます。3つ目は部分検索でHogeモデルのnameカラムにfogeが含まれている場合は該当するデータの情報を全て抽出してくれます。
all
allは正直なところ検索と言って良いのかわからないのですが、一応検索メソッドと言うジャンルで私は考えております。
Hoge.all
Hogeモデルの情報を全て取得します。一覧表示するときに主に使われますね。
pluck
pluckは意外と使いやすいメソッドだと私は思っています。指定したkeyのものを全て取得します。また複数のkeyも設定できます。whereは指定した条件のデータを全て取得しますが、pluckは指定したkeyのvalueのみ持ってきます。
Hoge.pluck(:id)
Hogeのidのvalueを全て取得します。pluckで集めた情報からさらに検索をかけたりすることもあるのでコントローラの裏側の処理では使われることがあるので覚えていて損はしないと思います。
where.not
where.notはその名の通りwhereの否定形です。条件で設定したもの以外のもので該当するデータを抽出してくれます。
Hoge.where.not(status: 0)
Hogeモデルのstatusが0以外のものを全て取得してくれます。小さなアプリケーションではあまり使われることないような気がしますが、状態を見るカラムが存在するときには便利です。
まとめ
今回は主にモデルの検索に使用するメソッドを紹介しました。検索だけでもこれだけのメソッドがあります。皆さんはどのくらいまで使っておりますでしょうか。
ここまで読んでくださりありがとうございます。