Rails6から公式にサポートされたinsert_allについて
ex) Userモデルをbulk insertする場合
code: ruby
class User
has_many: :pets
end
attrs = [
{
pet_id: 4,
name: "Fido"
},
{
pet_id: 5,
name: "Rex"
}
]
User.insert_all!(attrs, record_timestamps: true)
注意点
ActiveRecord#createを介さずにただinsertをするだけなのでリレーション解釈はしてくれない
そのため、上のようにPetインスタンスを渡すのはなくidを渡してやる必要がある。
record_timestampsオプションをつけてやらないとcreated_at, updated_atが渡らないので注意
.insert_all!(attrs, record_timestamps: true)