迭代数据库中的每条记录 – 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's phone number puts @user.number end end 

有人可以填写我这样做的最佳方法吗? 语法的一点帮助也会很棒:)

以下是迭代所有用户的正确语法:

 User.all.each do |user| #the code here is called once for each user # user is accessible by 'user' variable end 

要提高性能并减少负载,请使用User.find_each ( 请参阅doc )而不是User.all 。 请注意,使用find_each会失去排序function。

同样可能的单线程用于同一目的:

 User.all.map { |u| u.number = ""; puts u.number }