假设我有一个页面,可让您下载用户帐户评论的CSV报告,这些评论可能包含数千条记录。是否有更快的方式来审核每个用户的评论?现在我只是做一个简单的循环。
@user.comments.each do comment
# create csv
end
答案 0 :(得分:0)
在DB特定查询之外直接转储到CSV,并且假设您确实只是立即转储单个用户的注释,我将使用pluck
来避免实例化所有这些AR对象的开销。这也意味着您可以将返回的列限制为仅真正需要导出的列。
@user.comments.pluck(:id, :body).each do |comment|
# add to csv here
end
答案 1 :(得分:0)
类似的东西:
require 'csv'
sql = "Select * from comments"
records = ActiveRecord::Base.connection.execute(sql)
CSV.open("path/to/file.csv", "wb") do |csv|
records.each do |rec|
csv << rec
end
end
比为每行创建AR对象要快几个数量级。 Haven没有测试过这段代码,但是你明白了。