将嵌套实体导出到CSV文件

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

模型看起来像:

class ContainerRecord < ActiveRecord::Base has_many :child_records 

 class ChildRecord < ActiveRecord::Base belongs_to :container_record 

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

我不能保证与每个ContainerRecord关联的ChildRecords的数量,我不在乎每行是否有不同数量的非空列。

我试图使用FasterCSV,但我将子记录的所有数据推入一列而不是每列的列。

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

不确定FasterCSV,但快速和肮脏的解决方案可能是:

 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 

当然,将“child_field”替换为您想要从您的子模型中获取的字段。

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