Cha*_*son 1 iterator ruby-on-rails
当我做
users = User.find(:all)
Run Code Online (Sandbox Code Playgroud)
在Rails中,根据我的理解,它从我的数据库中提取所有用户.
如果你有成千上万的用户记录,这似乎很容易吃掉服务器的内存.这是真的?如果是真的,有没有办法迭代表中的数据而不杀死你的服务器?
从rails 2.3开始,您可以使用find_each和find_in_batches:
User.find_each { |user| user.some_method }
Run Code Online (Sandbox Code Playgroud)
将加载默认的1000个用户.您还可以使用:batch_size选项更改默认大小.
批量查找是类似的,但它为块而不是单个对象提供数组:
User.find_in_batches do |users|
users.each { |user| user.some_method }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |