LoginSignup
1
0

More than 3 years have passed since last update.

[Rails] find と find_by の違い

Last updated at Posted at 2020-10-22

この記事ではmacOS Catalina10.15.6にインストールしたRuby 2.6.5を使っています。
findとfind_byについて曖昧なところがあったので、自分なりにまとめてみました。

find

  • 引数にはid(主キー)を指定します。
  • 指定したidのレコードを取得するというイメージです。
  • idが見つからない時は例外(RecordNotFound)が返って来ます。赤いエラーページが発生してしまうのですね。
  • 引数を複数指定することも可能です。
モデル名.find(idデータ)
  • 具体的には以下のように使います。
Item.find(1) # => idが1のレコードを返す
Item.find(1,3,5) # => 指定したidを配列で返す

find_by

  • データは1番最初に合致した1件のみ取得できます。
  • id以外のカラム名なども検索条件にできます。
  • 条件に合致するものがないとnilを返します。取得データがなくてもfind_byの記述以降も処理を続けたい時に便利ですね。
  • 条件は複数指定可能です。
モデル名.find_by(条件)
  • 具体的には以下のように使います。
Article.find_by(title: 'hoge') 
# => titleが'hoge'で最初に合致したデータを返す

Fruit.find_by(name: 'apple', color: 'red') 
# => nameが'apple'でcolorが'red'のデータを返す

2つ条件を指定して1つだけ合致しなかった場合

Fruit.find_by(name: 'apple', color: 'blue') #=> nilを返す
1
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
1
0