Ruby on railsでデータベースから1行検索し、無かったらレコードを追加する。(find_or_create_by )

Ruby on railsでデータベースから1行検索し、無かったらレコードを追加したい場合、モデルのfind_or_create_by メソッドを使います。

見つかった最初の行、または新しく追加された行のデータを返します。

基本構文。

モデル.find_or_create_by([属性])

例1.Joneという名前の最初のユーザーを探し、無かったら新しいユーザーを作る。

User.find_or_create_by(first_name: 'Jone')

例2.Joneという名前の最初のユーザーを探し、無かったらDoeという性を付加して新しいユーザーを作る。

User.create_with(last_name: 'Doe').find_or_create_by(first_name: 'Jone')

例3.Joneという名前の最初のユーザーを探し、無かったらDoeという性を付加して新しいユーザーを作る。

User.find_or_create_by(first_name: 'Jone') do |user|
  user.last_name = "Doe"
end

 

参考サイト:find_or_create_by – リファレンス – – Railsドキュメント

タイトルとURLをコピーしました