2016-12-24 9 views
0

私は自分のAPIに電話番号の配列を渡していて、それらをデータベースに挿入したいと思います。辞書をpostgresqlに効率的に挿入する

この方法を可能な限り効率的に行うにはどうすればよいですか?

それは文字通り500個の接点

がある場合、これは私がそれらを挿入していますどのようにある500のINSERT文に分割するので、それはどのように私は最適化するのですか?

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

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

...現在は少し非効率的ですか

答えて

0

あなたが探していることactiverecord-import gem

のRails 5.0

使用ActiveRecordのインポート0.11.0以上のためです。

通常のバニラのOut-of-the-Box ActiveRecordは、大量のデータを効率的に挿入するためのサポートを提供していないため、 Gemfileで

:バニラのActiveRecordを使用すると、各モデルに保存操作個々を実行しなければならない

モデルで
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の詳細については、そのウィキをご覧ください:https://github.com/zdennis/activerecord-import/wiki

関連する問題