迭代数据库中的每条记录 - Ruby on Rails / ActiveRecord

时间:2012-11-18 16:33:08

标签: ruby-on-rails database loops 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

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

2 个答案:

答案 0 :(得分:64)

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

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会失去排序功能。

答案 1 :(得分:3)

也可用于同一目的的单线:

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