2012-11-18 13 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

DB内のすべてのユーザーにSMSを送信します。 'number' =ユーザーの電話番号。 – dougiebuckets

答えて

54

ここでは、すべてのユーザー反復処理するための正しい構文は次のとおりです。パフォーマンスを向上させ、負荷を減らし、代わりにUser.allUser.find_eachsee doc)を使用するには

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

を。 find_eachを使用するとソート機能が失われることに注意してください。同じ目的のためにも

+15

+1 – HungryCoder

+0

非常に役に立ちます。ありがとう! – dougiebuckets

1

可能ワンライナー:

User.all.map { |u| u.number = ""; puts u.number } 
関連する問題