我正在使用动态find_all方法处理一些复杂的查询,并且达到了向该find_all方法发送块将真正简化我的代码的程度。

是否有任何插件或工作正在处理此问题?

简单来说,我想做类似的事情:

@products = Product.find_all_by_ids(ids, .....) do |p|
            # do something to each product like      
            p.stock += 10
          end

非常感谢任何其他指南或更好的方法。

有帮助吗?

解决方案

Rails 2.3引入了 find_in_batches find_each 方法(参见这里)批量处理许多记录。

你可以这样做:

  Person.find_each(:conditions => "age > 21") do |person|
    person.party_all_night!
  end

其他提示

我使用Enumerable提供的 .each 方法

@products = Product.find_all_by_ids(ids, .....)
@products.each { |p| p.stock += 10 } 

Rails提供的一些 Enumerable扩展可能对您有所帮助如果你正在做一些常见的事情。

另外,如果您希望更改实际持续存在,请不要忘记使用 p.save 之类的东西保存对象。

这有什么问题:

@products = Product.find_all_by_ids(ids).each do |p| 
  p.stock+=10
 end

如果您不知道,每个都返回传递给它的数组。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top