LoginSignup
5
3

More than 3 years have passed since last update.

【rails】first_or_initialize

Posted at

first_or_initializeについて学習したため、アウトプットいたします。

first_or_initializeとは?
first_or_initializeの使い方は?

の順に記述します。

first_or_initializeとは?

whereで検索した条件のレコードが存在すればそのレコードのインスタンスを返し、存在しなければ新しくインスタンスを作るメソッドです。

と言ってもなかなかわかりませんよね。
詳しく説明します。

例えば、
studentというテーブルがあったとして、そこのデータベース上に10人の名前がそれぞれ登録されていたとします。

first_or_initializeメソッドは、
そのデータベース上にそのstudentがいなかった場合→そのstudentを新規登録します。
一方、
studentがすでに登録されていた場合→その生徒の情報を取ってきます。

少しづつわかってきましたか?

すなわちこのメソッドの特徴は
「データの重複を避けること」なんです。

ではどうやって使うのでしょうか?

first_or_initializeの使い方


student = Student.where(name: "佐藤").first_or_initialize

存在しなければ新しくインスタンスを作りたいオブジェクトを定義し、
その後に
where(条件).first_or_initialize
とすると完成です。

上記の例では、
そのデータベース上に佐藤さんがいなかった場合→その佐藤を新規登録します。
一方、
佐藤さんすでに登録されていた場合→佐藤さんの情報(id, age等定義したもの)を取ってきます。

5
3
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
5
3