Вы также можете попробовать upsert
, что примерно столько же, сколько activerecord-import
, но работает (в настоящее время) с MySQL, Postgres и SQLite3:
require 'upsert'
Upsert.batch(Contact.connection, Contact.table_name) do |upsert|
emails.each do |email|
upsert.row(email: email)
end
end
Обратите внимание, что это включает в себя один запрос к базе данных для каждой записи, но это «upsert», поэтому вам не нужно проверять, существует ли запись.В вашем примере это не проблема, но в большинстве приложений она становится одной.