1

我有一个带有一些嵌套数据的 Rails 应用程序,我想将其导出为 CSV 文件

模型看起来像:

class ContainerRecord < ActiveRecord::Base
  has_many      :child_records 

class ChildRecord < ActiveRecord::Base
  belongs_to :container_record

我希望能够导出一个 CSV 文件,其中每个 ContainerRecord 在一行中,其信息在前几列中,每个 ChildRecord 的值在其余列中。

我无法保证与每个 ContainerRecord 关联的 ChildRecord 的数量,并且我不在乎每行是否有不同数量的非空列。

我尝试使用 FasterCSV,但我将子记录的所有数据都推送到一列而不是每个列中。

这是我可以用 FasterCSV 做的事情吗?如果不是,我可以使用什么方法来实现我的目标?

4

2 回答 2

2

Not sure about FasterCSV but a quick & dirty solution could be:

class ParentClass < AR::Base
  has_many :children

  def self.csv
    all.map do |object|
      ( object.attributes.values + object.children.map(&:child_field) ).flatten.join(',')
    end.join("\n")
  end
end

Replacing "child_field" with the field you want to take from your child model of course.

于 2010-03-05T23:02:16.290 回答
2

我最终在 csv_builder上找到了一个很好的教程,它让我可以用最少的努力完成我想做的事情,并让我更贴近 MVC 架构。

于 2010-03-08T15:55:50.983 回答