find_or_create_byを使ってみる
find_or_create_byとは
検索条件に合致するデータが存在した場合、1件目のデータを取得し、存在しない場合は新規作成します。
$ モデル名.find_or_create_by(条件)
アプリケーションの土台を作る
$ rails new find_or_create_by_test
$ rails g scaffold User name:string
$ bin/rails db:migrate
find_or_create_byを使って、データを作成する
以下のコードは、name: "Taro"
のデータが存在すれば取得、
存在しなければブロックを実行し、データを作成します(今回はこっち)。
User.find_or_create_by(name: "Taro") do |user| user.name = "Taro" end
name: "Taro"
のデータ作成されました。
find_or_create_byを使って、データを取得する
user = User.find_or_create_by(name: "Taro") do |user| user.name = "Taro" end
既にname: "Taro"
のデータは存在するので、今回はデータの取得のみになります。