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つのみを取得する。