在红宝石中循环

时间:2011-10-13 09:13:27

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

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

model.find(i)

并获取每个元素但是如何循环直到最后一个元素?

3 个答案:

答案 0 :(得分:6)

我假设你正在使用rails&积极的记录。如果是这样,那么

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

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

前者一次从数据库加载所有用户,后者 - 批量加载记录,如果你有大量记录,这将很有用。

在ruby迭代器中使用了很多,通常使用名为Enumerable的标准模块:An Introduction to Ruby's Enumerable Module

答案 1 :(得分:3)

罗斯在答案array.each中说,这是循环的最佳方式。

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

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

最好说

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

让Active Record在幕后照顾你的记忆。

答案 2 :(得分:2)

循环有很多种方法 假设您有一个用户对象

你可以做到

users.each do |user|

   puts user.name

end 

这是循环的最简单方法

其他方式可能是使用for循环,而循环其他循环在rails中 http://www.tutorialspoint.com/ruby/ruby_loops.htm