我正在使用动态find_all方法处理一些复杂的查询,并且达到了向该find_all方法发送块将真正简化我的代码的程度。
是否有任何插件或工作正在处理此问题?
简单来说,我想做类似的事情:
@products = Product.find_all_by_ids(ids, .....) do |p|
# do something to each product like
p.stock += 10
end
非常感谢任何其他指南或更好的方法。
答案 0 :(得分:3)
Rails 2.3引入了find_in_batches
和find_each
方法(请参阅here)以批量处理许多记录。
你可以这样做:
Person.find_each(:conditions => "age > 21") do |person|
person.party_all_night!
end
答案 1 :(得分:2)
我使用Enumerable提供的.each
方法
@products = Product.find_all_by_ids(ids, .....)
@products.each { |p| p.stock += 10 }
如果你正在做一些常见的事情,Rails提供的甚至还有一些extensions to Enumerable可能对你有所帮助。
另外,如果您希望更改实际持续存在,请不要忘记使用p.save
之类的内容保存对象。
答案 2 :(得分:0)
这有什么问题:
@products = Product.find_all_by_ids(ids).each do |p|
p.stock+=10
end
如果您不知道,每个都返回传递给它的数组。