Итерирование по каждой записи в базе данных - Ruby on Rails/ActiveRecord
n00b вопрос. Я пытаюсь пропустить каждую запись пользователя в моей базе данных. Псевдокод может выглядеть примерно так:
def send_notifications
render :nothing => true
# Randomly select Message record from DB
@message = Message.offset(rand(Message.count)).first
random_message = @message.content
@user = User.all.entries.each do
@user = User.find(:id)
number_to_text = ""
@user.number = number_to_text #number is a User phone number
puts @user.number
end
end
Может ли кто-нибудь наполнить меня наилучшим подходом для этого? Немного помочь синтаксису было бы здорово:)
Ответы
Ответ 1
Вот правильный синтаксис для итерации по всему пользователю:
User.all.each do |user|
#the code here is called once for each user
# user is accessible by 'user' variable
end
Чтобы повысить производительность и уменьшить нагрузку, используйте User.find_each
(см. документ) вместо User.all
. Обратите внимание, что использование find_each
теряет способность сортировать.
Ответ 2
Также возможна однострочная линия для одной цели:
User.all.map { |u| u.number = ""; puts u.number }