Rails where.firstとfind_byの違い
TeckRachoの記事より。
where.firstの場合、「 # ORDER BY "users"."id" ASC 」の処理も発生するためクエリ実行処理が重たくなるそうです。
Active RecordのようなORM(Obuject-Relational_Mapper)の場合、簡単にデータを取り出せるので裏側の処理は見えにくいですね。
あと、find_byとwhereの違いもよくわかっていなかったので調べてみました。
find_by
・返り値はレシーバーのオブジェクト(レシーバーは、(例)User.email の「左側」を指す)
・発行SQLにorder by id descが付与されない
・DB問い合わせを行う
Where
・返り値はActiveRecord_Relationのオブジェクト
・where().first、where().map()などデータを操作するタイミングでDB問い合わせを行う
・発行SQLにORDER BY "users"."id" ASCが付与される
ActiveRecord_Relationはメソッドが返すもの。
以下の記事が分かりやすかったです。
まだまだ勉強が足りないですね!
この記事が気に入ったらサポートをしてみませんか?