Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何选择1000个对象的单个组?_Ruby On Rails_Arrays_Object - Fatal编程技术网

Ruby on rails 如何选择1000个对象的单个组?

Ruby on rails 如何选择1000个对象的单个组?,ruby-on-rails,arrays,object,Ruby On Rails,Arrays,Object,起初,我试图这样做: Photo.find(:all, :conditions => ["id < 2000 AND id > 999"]) 但后来我意识到这不一定是1000个物体。如何准确地选择一千个对象。这样我就可以一次运行1000个对象的进程。像这样 Photo.find(:all, :conditions => ["id < 2000 AND id > 999"]).each{|instance| instance.photo.reprocess!

起初,我试图这样做:

 Photo.find(:all, :conditions => ["id < 2000 AND id > 999"])
但后来我意识到这不一定是1000个物体。如何准确地选择一千个对象。这样我就可以一次运行1000个对象的进程。像这样

Photo.find(:all, :conditions => ["id < 2000 AND id > 999"]).each{|instance| instance.photo.reprocess!(:tiny_thumb) }
您希望使用:limit和:offset:

您需要包括:顺序以确保结果一致,否则条目不一定会以相同的顺序出现,这将打乱您的分块。

您希望使用:限制和:偏移:

您需要包括:顺序以确保结果一致,否则条目不一定会以相同的顺序出现,这将打乱您的分块。

使用“批量查找”:

批量大小为1000,这也是默认值。

使用批量查找:


批量大小为1000,这也是默认值。

哇,这太棒了!!我从来不知道这些命令。出于随机好奇,有没有办法向后处理它们?@Trip:You可以:order=>'id desc'以相反的顺序对它们进行排序,或者找出有多少个,然后从末尾开始:偏移1000,并减少每个块的偏移量。:offset和:limit类似于AR的很多东西都起源于SQL,如果你了解SQL,使用AR会容易得多。哇,这太棒了!!我从来不知道这些命令。出于随机好奇,有没有办法向后处理它们?@Trip:You可以:order=>'id desc'以相反的顺序对它们进行排序,或者找出有多少个,然后从末尾开始:偏移1000,并减少每个块的偏移量。:offset和:limit类似于AR的很多东西都起源于SQL,如果您了解SQL,那么使用AR会容易得多。
# First chunk
Photo.find(:all, :order => :id, :limit => 1000)

# Second chunk
Photo.find(:all, :order => :id, :limit => 1000, :offset => 1000)