2010-03-05 67 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