0
0

insert_all について

Posted at

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が良さそう
ただ、エラーハンドリングやトランザクションはしっかりしないといけない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0