Перебирая рубин - PullRequest
       3

Перебирая рубин

1 голос
/ 13 октября 2011

Привет, у меня есть база данных пользователей в проекте ruby, и мне нужно просмотреть каждый из них и получить их значения.Как вы зацикливаетесь?Я знаю, что вы можете использовать

model.find(i)

и получить каждый элемент, но как выполнить цикл до последнего элемента?

Ответы [ 3 ]

6 голосов
/ 13 октября 2011

Я предполагаю, что вы используете рельсы и активную запись.Если это так, выполните

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

или

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

Первый загружает всех пользователей из базы данных одновременно, второй - загружает записи в пакетах, что полезно, еслимного записей.

В ruby ​​часто используются итераторы, и обычно для этого используется стандартный модуль Enumerable: Введение в перечисляемый модуль Ruby

3 голосов
/ 13 октября 2011

Как сказал Росс в своем ответе, array.each - лучший способ зацикливаться.

Но в случае ActiveRecord вы должны взглянуть на раздел Руководства по Rails на Загрузка в пакетах .

Вы могли бы очень легко сказать User.all.each, но если у вас есть 1 000 000 пользователей, это вполне может привести к сбою вашего сервера.

Гораздо лучше сказать

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

И пусть Active Record позаботится о вашей памяти за кулисами.

2 голосов
/ 13 октября 2011

Существует много способов зацикливания. Скажем, у вас есть объект пользователя

, который вы можете сделать

users.each do |user|

   puts user.name

end 

. Это самый простой способ зацикливания

.для петли, в то время как петли других петель в рельсах http://www.tutorialspoint.com/ruby/ruby_loops.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...