find_in_batches仅适用于基于整数的主键?

时间:2012-06-17 15:39:16

标签: ruby-on-rails-3 activerecord

我的ActiveRecord模型使用基于uuid的主键,我想使用find_in_batches一次加载1000条记录。但是,看到documentation,说它只适用于基于整数的主键。我查看了代码,我看到它只是通过“primary_key ASC”订购记录。为什么它不适用于基于非整数的主键?只是因为这个订单?我用这种方法尝试了我的模型,它运作正常。

有人能解释一下这个吗?

1 个答案:

答案 0 :(得分:7)

猜猜文档不是100%正确。它与增量主键一起正常工作。如果您可以保证任何新记录的uuid大于表中任何现有记录的密钥,它将正常工作。否则,您可能会错过开始批处理后添加的新记录。

在内部,在每一步中,它获取最后一条记录的ID(last_id),并在下一步选择id大于last_id的1000条记录。因此,如果应用程序创建具有唯一ID<在处理步骤中last_id,此记录将被排除在处理之外。