在Activeadmin中生成CSV时使用自定义查询

时间:2016-02-17 08:08:37

标签: csv activeadmin

我有其他计算列(基于联接)我想要包含在我的CSV中。

如果我打开并为每个记录单独计算

csv do
  column :complicated_calculation {  |r| r.calculate_things }
end

生成数千条记录需要很长时间。

我需要在生成CSV时自定义SELECT查询,然后使用该查询中的列。我该怎么做?

1 个答案:

答案 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