2011-10-13 171 views
1

嗨,我有一个ruby项目中的用户数据库,我需要循环遍历每个人并获取他们的值。你如何循环?我知道你可以使用在ruby中循环遍历

model.find(i) 

并获得每个元素,但你如何循环到最后一个元素?

回答

2

有很多方法可以循环 假设你有一个用户对象

你可以做

users.each do |user| 

    puts user.name 

end 

这是循环

其他方式可以使用for循环最简单的方法,而在轨道中循环其他回路 http://www.tutorialspoint.com/ruby/ruby_loops.htm

6

我假定您正在使用导轨&有效记录。如果是这样,

User.all.each do |user| 
    # your code here 
end 

User.find_each do |user| 
    # your code here 
end 

前者加载数据库中的所有用户同时,后者 - 负荷记录分批,这是有益的,如果你有很多的记录。

在红宝石迭代器使用了很多,通常用于调用可枚举的标准模块:An Introduction to Ruby's Enumerable Module

+1

对于'find_each' – jaydel

3

正如罗斯在他回答说:array.each是循环的最佳方式。

但是在ActiveRecord的情况下,您应该看看关于Loading in Batches的Rails指南部分。

你可以很容易地说User.all.each,但如果你有1,000,000用户,这可能会崩溃你的服务器。

这是更好地说

User.find_each do |user| 
    * do something * 
end 

而让幕后的内存后的Active Record的样子。