我第一次使用 gem bulk_insert: https ://github.com/jamis/bulk_insert
我成功地使用 gem 将记录从一个表批量复制到另一个表。后来,我需要报告新记录的数量。反正我看不到从 那里得到行数bulk_insert,所以我转向return_primary_keys并result_sets获取计数,如自述文件中所示。
我添加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线了。
我已经多次阅读自述文件并搜索了没有结果的问题。还检查了我是否获得了最新版本 - 1.7.0
我错过了什么?我怎么去result_sets?或者更好的是,我可以在不检索整个新主键列表的情况下获得记录数吗?