hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

Rails Drill 問題6

必要となる知識

特定の条件を満たすインスタンス(レコード)を取得するにはfind_byメソッドを使う。ただし、条件に満たすものが複数あった場合、idが一番若い一件だけを返す。
そのため、主に1件しか存在しないことが期待される場合にfind_byメソッドを使う。なお、引数はnewメソッド等と同様にカラムと値を指定する。

 tweetsテーブルに保存されているuser_idが1のレコードを1つ取得する。

実行例

コンソール
1
2
pry(main)> #tweetsテーブルで、user_idが1のインスタンスを1件取得するコマンド打ってください。
=>#<Tweet id: 2, image: "http://image.jpg", text: "rails now. it's so fun!!", created_at: "2015-01-12 07:55:38", updated_at: "2015-01-12 07:55:38", user_id: 1>

 

解答例
1
2
3
4
5
6
7
8
9
pry(main)> Tweet.find_by(user_id: 1)
  Tweet Load (0.4ms)  SELECT  `tweets`.* FROM `tweets` WHERE `tweets`.`user_id` = 1 LIMIT 1
=> #<Tweet:0x00007fa9a157f218
 id: 1,
 text: "text",
 image: "url",
 created_at: Thu, 29 Nov 2018 07:47:54 UTC +00:00,
 updated_at: Thu, 29 Nov 2018 07:47:54 UTC +00:00,
 user_id: 1>

解説

find_byメソッドはモデル名.find_by(カラム名: 値)で検索してヒットした最初のレコード1つのみを取得する。