LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】findとfind_byとwhereの違い

Posted at

find

>> User.find(1)
  User Load (2.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
=>                                                
#<User:0x0000000109a26750                         
 id: 1,                                           
 name: "tarou"
  • 引数に指定できるのは数値のみ。
  • idを対象にして検索する場合に用いる
  • 該当するデータがなかった場合は、エラーが発生する。

find_by

>> User.find_by(name: 'tarou')
  User Load (2.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`name` = 'ryoya' LIMIT 1
=>                                                                         
#<User:0x000000010c95e8b0                                                  
 id: 1,                                                                    
 name: "tarou"    
  • 引数にはidや他のカラムも指定できる。
  • 引数はキーとバリューで指定する必要がある。
  • 該当するデータのうち、最初に見つかったデータを返す。
  • 該当するデータがなかった場合はnilを返す。

where

>> User.where(name: 'tarou')
  User Load (3.5ms)  SELECT `users`.* FROM `users` WHERE `users`.`name` = 'tarou'

[#<User:0x000000010a962f48                                                      
  id: 1,                                                                        
  name: "tarou"
 #<User:0x000000010a962e80
  id: 2,
  name: "tarou"
 #<User:0x000000010a962d76
  id: 3,
  name: "tarou"
  • 引数にはidや他のカラムも指定できる。
  • 引数はキーとバリューで指定する必要がある。
  • 該当するデータを全て返す。
  • 該当するデータがなかった場合は、空の配列を返す。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0