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)