insert_all とは
複数のレコードを登録(bulk insert)できる
データベースアクセスが多くなりがちなループ処理などで有効
ただし、バリデーションなどのチェックを無視して登録する点に注意
使用例
user_names.each { |user_name| User.create(name: user_name) }
→上記ではuser_namesの数が増えれば増えるほどDBアクセスが多くなる
ただし、正常にバリデーションが各insertに行われる
user_attributes = user_names.map { |user_name| {name: user_name} }
User.insert_all(user_attributes)
→上記では、一括でDB登録が行える
ただし、前述の通りバリデーションなどを無視し、またinsertに失敗した要素があったとしても例外は発生させない
使い分け
insert対象が多くなりそうな場合は、insert_allが良さそう
ただ、エラーハンドリングやトランザクションはしっかりしないといけない