我有其他计算列(基于联接)我想要包含在我的CSV中。
如果我打开并为每个记录单独计算
csv do
column :complicated_calculation { |r| r.calculate_things }
end
生成数千条记录需要很长时间。
我需要在生成CSV时自定义SELECT
查询,然后使用该查询中的列。我该怎么做?
答案 0 :(得分:1)
Customizing resource retrieval向您展示了如何在不重写整个csv构建器的情况下:修改scoped_collection
。
因此,如果您的查询很好地等待您的模型:
class Person < ActiveRecord::Base
def self.with_calculation
select("people.*, (mumbo + jumbo * fumbo) "\
"AS complicated_calculation") # notice we name the attribute here
.joins("LEFT JOIN games ON person_id = people.id")
.group("people.id")
end
end
用你的计算你可以做到:
controller do
def scoped_collection
super.with_calculation
end
end
然后您的CSV将具有免费的属性:
csv do
column :complicated_calculation
end