Как вы выбираете отдельные группы из 1000 объектов? - PullRequest
1 голос
/ 23 июля 2011

Сначала я пытался сделать это:

 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) }

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

Вы хотите использовать :limit и :offset:

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

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

Вам необходимо включить :order, чтобы обеспечить согласованные результаты, в противном случае записи не обязательно появятся втот же порядок, который испортит ваш кусок.

1 голос
/ 23 июля 2011

Использование find_in_batches: http://apidock.com/rails/ActiveRecord/Batches/find_in_batches

с :batch_size 1000, что также является значением по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...