Я впервые использую gem bulk_insert: https://github.com/jamis/bulk_insert
Я успешно использовал гем для массового копирования записей из одной таблицы в другую. Позже мне нужно было сообщить количество новых записей. В любом случае я не вижу, как вернуть счетчик строк с bulk_insert
, поэтому я переключился на return_primary_keys
и result_sets
, чтобы получить счетчик, как показано в файле Readme.
Я добавил inserted =
в строку 3 и добавил последнюю строку ниже:
columns = %i[first_name, last_name, email, referal]
inserted = User.bulk_insert(*columns, ignore: true, return_primary_keys: true) do |bulk|
bulk.set_size = BATCH_SIZE
registrants.select(:fname, :lname, :email).find_in_batches(batch_size: BATCH_SIZE) do |batch|
batch.each do |reg|
bulk.add [reg.fname, reg.lname, reg.email, 'self-registered']
end
end
end
puts "added #{inserted.result_sets.count} self-registered users"
Теперь я получаю NoMethodError: undefined method 'result_sets' for nil:NilClass
на линии puts
.
Я прочитал Readme несколько раз и искал проблему безрезультатно. Также проверил, что у меня последняя версия - 1.7.0
Что мне не хватает? Как я могу добраться до result_sets
? Или, что еще лучше, могу ли я получить количество записей без получения всего списка новых первичных ключей?