gpt4 book ai didi

ruby - 相当于DataMapper中的find_each

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:25 26 4
gpt4 key购买 nike

有没有办法在 DataMapper 中执行与 ActiveRecord#find_each 等效的操作?

(find_each 将通过以 1000 为一批的方式在内存中获取内容来迭代查询结果,而不是将所有内容都加载到内存中)

最佳答案

我按照@MichaelKohl 的建议检查了 dm-chunked_query,但我无法让它像我预期的那样工作,它获取了整个集合(我希望它使用 OFFSET+LIMIT ).所以我写了自己的扩展,很简单,希望对你有帮助:

class DataMapper::Collection
def batch(n)
Enumerator.new do |y|
offset = 0
loop do
records = slice(offset, n)
break if records.empty?
records.each { |record| y.yield(record) }
offset += records.size
end
end
end
end

# Example
Model.all(:order => :id.asc).batch(1000).each { |obj| p obj }

关于ruby - 相当于DataMapper中的find_each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com