ruby – 相当于DataMapper中的find_each
发布时间:2020-12-17 02:00:48 所属栏目:百科 来源:网络整理
导读:有没有办法在DataMapper中执行等效的ActiveRecord#find_each? (find_each将通过批量处理1000而不是将所有内容加载到内存中来迭代查询结果 解决方法 我检查了@michaelKohl建议的dm-chunked_query,但我无法按照我的预期使其工作,它获得整个集合(我希望它使用O
有没有办法在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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |