有效地将字典插入postgresql

时间:2016-12-24 01:55:48

标签: ruby-on-rails activerecord

我将一系列电话号码传递给我的api,并希望将它们插入数据库。

我怎样才能以最有效的方式做到这一点?

目前这种效率有点低,因为如果有500个联系人,它会将其分为500个插入语句

这就是我插入它们的方式..

   params[:phone_numbers].map{ |key, value| 

      UserContact.create({
          user: current_user,
          name: key,
          number: value
        })
    }

我如何优化?

1 个答案:

答案 0 :(得分:0)

您要找的是activerecord-import gem

  

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