実はデフォルトのメソッドではなかったりします。
where.(id: 100).first_or_createとかはあるんですけどね。。
きっとRails5が出る頃には実装されているのでしょう。
これがあるとバッチで請求情報とか作る時にいいですよね!
請求情報なんて様々な事情で何度も作り直しすることもありますし(白目)
cutoff_date = Time.now.end_of_month
User.all.each do |user|
invoice = Invoice.find_or_initialize_by(
user_id: user.id,
cutoff_date: cutoff_date.strftime('%Y-%m-%d'),
)
invoice.user_id = user.id
invoice.price = 10000
invoice.cutoff_date = cutoff_date.strftime('%Y-%m-%d')
invoice.save!
end
これで何回バッチを回しても安心です(爆)