6

我的 ActiveRecord 模型使用基于 uuid 的主键,我想find_in_batches一次加载 1000 条记录。但是,看到文档,说它只适用于基于整数的主键。我浏览了代码,我看到它只是按“ primary_key ASC”排序记录。为什么它不适用于基于非整数的主键?就因为这个命令?我用这种方法尝试了我的模型,它工作正常。

谁能解释一下这个?

4

1 回答 1

8

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

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

于 2012-06-17T18:08:40.567 回答