我将一系列电话号码传递给我的api,并希望将它们插入数据库。
我怎样才能以最有效的方式做到这一点?
目前这种效率有点低,因为如果有500个联系人,它会将其分为500个插入语句
这就是我插入它们的方式..
params[:phone_numbers].map{ |key, value|
UserContact.create({
user: current_user,
name: key,
number: value
})
}
我如何优化?
答案 0 :(得分:0)
Rails 5.0
使用activerecord-import 0.11.0或更高版本。
因为普通的,开箱即用的ActiveRecord不支持有效地插入大量数据。使用vanilla ActiveRecord,您必须对每个模型执行单独的保存操作:
在Gemfile中:
gem "activerecord-import"
模特:
require "activerecord-import"
在控制器中:
user_contacts = []
params[:phone_numbers].map{ |key, value|
user_contacts << UserContact.new(user: current_user,name: key,number: value)
}
UserContact.import user_contacts
有关activerecord-import的更多信息,请参阅其wiki:https://github.com/zdennis/activerecord-import/wiki