迭代数据库中的每条记录 – 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 }