first_or_createメソッドについて

本日のお題

本日のお題は、Ruby on Rails のfirst_or_createメソッドです。

目次

  • メソッドの概要
  • 基本的な使い方
  • 応用的な使い方

メソッドの概要

first_or_createメソッドの役割は2つあります。

一つ目は、指定した条件に合致するレコードがあればそれを返すこと。

二つ目は、指定した条件に合うレコードがなければそのレコードを新たに作成し保存すること。

 

実際に使用例を見てみましょう

基本的な使い方

first_or_createメソッドは、基本的にはwhereメソッドと組み合わせて使用します。

Book.where(author: "宮沢賢治").first_or_create

これで、booksテーブルにauthor: "宮沢賢治”のレコードがあれば取得し、なければ新しいレコードが保存されます。

応用的な使い方

first_or_createメソッドは、ブロックを作ることで検索条件以外のカラムの情報を操作することも可能です。

Book.where(author: "宮沢賢治").first_or_create do |book|

  book.name = "xxxx"

  book.published_at = xxxx

end

first_or_createメソッドの戻り値であるBookモデルのインスタンスがbookという変数に代入された状態で、ブロック内の処理が行われています。