2016-12-24 2 views
0

Я передаю массив телефонных номеров в свой api и хотел бы вставить их в базу данных.эффективно вставлять словарь в postgresql

Как я могу сделать это наиболее эффективным способом?

Это в настоящее время немного неэффективно, потому что буквально делит его на 500 операторами вставки, если есть 500 контактов

Это, как я их вставив ..

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 или выше.

Поскольку простой-ванильный, готовый к использованию ActiveRecord не обеспечивает поддержку для эффективного ввода больших объемов данных. С ванильным 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

Смежные вопросы