2010-03-05 61 views
0

我有一些嵌套数据的Rails应用程序,我想作为一个CSV文件导出出口嵌套实体到CSV文件

的模型看起来像:

class ContainerRecord < ActiveRecord::Base 
    has_many  :child_records 

class ChildRecord < ActiveRecord::Base 
    belongs_to :container_record 

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

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

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

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

回答

1

我最终找到了一个不错的tutorial on csv_builder,这让我能够以最小的努力完成我想做的事情,并让我能够更贴近MVC体系结构。

1

不确定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”你想要从课程的孩子模式,以现场。

+0

感谢您的解决方案,我最终找到了一个很好的csv_builder教程,并决定走这条路。 – jessecurry 2010-03-08 15:54:19