2012-11-18 68 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 } 
相關問題