题
我正在使用动态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
如果您不知道,每个都返回传递给它的数组。
不隶属于 StackOverflow