Ruby on rails 按顺序和限制查找每个

Ruby on rails 按顺序和限制查找每个,ruby-on-rails,neo4j,rails-postgresql,Ruby On Rails,Neo4j,Rails Postgresql,我需要限制和订购记录的批次,并且正在使用find_。我见过很多人要求这样做,但没有真正好的解决方案。如果我错过了,请发一个链接 我有30米的记录,想处理10米的重量列中的最高值 我试着用这种方法,有人写道:但无法让它发挥作用 该站点的代码不接受订单作为选项。这似乎很奇怪,因为它的名字是“按顺序查找每个”。我补充如下: class ActiveRecord::Base # normal find_each does not use given order but uses id asc def s

我需要限制和订购记录的批次,并且正在使用find_。我见过很多人要求这样做,但没有真正好的解决方案。如果我错过了,请发一个链接

我有30米的记录,想处理10米的重量列中的最高值

我试着用这种方法,有人写道:但无法让它发挥作用

该站点的代码不接受订单作为选项。这似乎很奇怪,因为它的名字是“按顺序查找每个”。我补充如下:

class ActiveRecord::Base
# normal find_each does not use given order but uses id asc
def self.find_each_with_order(options={})
  raise "offset is not yet supported" if options[:offset]
  page = 1
  limit = options[:limit] || 1000
  order = options[:order] || 'id asc'      
  loop do
    offset = (page-1) * limit
    batch = find(:all, options.merge(:limit=>limit, :offset=>offset, :order=>order))
    page += 1
    batch.each{|x| yield x }
    break if batch.size < limit
  end
end
class GetStuff
  def self.grab_em
    file = File.open("1000 things.txt", "w")
    rels = Thing.find_each_with_order({:limit=>100, :order=>"weight desc"})
    binding.pry
    things.each do |t|
      binding.pry
      file.write("#{t.name} #{t.id} #{t.weight}\n" )
      if t.id % 20 == 0
        puts t.id.to_s
      end
    end
    file.close
  end
end

顺便说一句,我在postgres中有数据,我将获取一个子集并将其移动到neo4j,所以我用neo4j标记,以防你们中的任何neo4j人知道如何做。谢谢。

不确定这是否是您要找的,但您可以这样做:

weight = Thing.order(:weight).select(:weight).last(10_000_000).first.weight

Thing.where("weight > ?", weight).find_each do |t|
 ...your code...
end