2012-11-18 69 views
20

n00b问题。我试图循环访问数据库中的每个用户记录。伪代码可能看起来有点像这样:遍历数据库中的每条记录 - Ruby on Rails/ActiveRecord

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 

有人可以填写我的最佳方法吗?与语法有一点帮助将是巨大的:)

+1

我们可以得到你想要达到的目的更多的背景。以这种方式浏览你的用户数据库似乎有点费用 – toxicate20

+0

如果你在Ruby中获得基本知识会更好。当然,你不会后悔的。无论如何,告诉我们循环的目的是什么? –

+0

将短信发送给数据库中的每个用户。 '号码'=用户的电话号码。 – dougiebuckets

回答

54

下面是正确的语法来遍历所有用户:

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

为了提高性能和降低负载,使用User.find_eachsee doc),而不是User.all。请注意,使用find_each会失去排序能力。

+15

+1对'find_each' – HungryCoder

+0

非常有帮助。谢谢! – dougiebuckets

1

也可能一个衬为同样的目的:

User.all.map { |u| u.number = ""; puts u.number } 
相关问题