类似于这个问题。我正在使用 Rails 3.2,所以我知道我不需要 FasterCSV,我想做的是将所有数据导出到 CSV 文件。数据有一个父模型,它有七个 has_many 子节点,并且每个 has_many 子节点中可能有一个或多个记录。例如。
类 ParentModel < ActiveRecord::Base
has_many :child_1
has_many :child_2
has_many :child_3
然后
类 Child1 < ActiveRecord::Base
属于_to :parent_model
类 Child2 < ActiveRecord::Base
属于_to :parent_model
类 Child3 < ActiveRecord::Base
属于_to :parent_model
所以我有很多 ParentModel 记录,每个 ParentModel 记录可能有不同数量的 Child1、Child2 和 Child3 记录。如何动态找出 CSV 的第一行,然后填充 CSV,如果 ParentModel 恰好有一条 Child 记录,则插入 NULL?有没有一种有效的方法来做到这一点,或者它是否涉及很多循环?
例如,在整个数据库中,一个ParentModel最多有2条Child1记录,任何ParentModel最多只有1条Child2记录,有3条Child3记录。所以 CSV 的第一行是:
ParentModel.field1, ParentModel.field1, Child1.field1, Child1.field2, Child1(record#2).field1, Child1(record#2).field2, Child2.field1, Child2.field2,Child3.field1, Child3.field2, Child3(record#2).field1, Child3(record#2).field2, Child3(record#3).field1, Child3(record#3).field2
但随后另一个 Child1 被添加到 ParentModel,因此下次您进行导出时,它会计算出来,然后 CSV 的第一行将如下所示:
ParentModel.field1、ParentModel.field1、Child1.field1、Child1.field2、Child1(record#2).field1、Child1(record#2).field2、Child1(record#3).field1、Child1(record#3)。 field2, Child2.field1, Child2.field2,Child3.field1, Child3.field2, Child3(record#2).field1, Child3(record#2).field2, Child3(record#3).field1, Child3(record#3 ).field2
或者....在写完之后,我想知道我是否过于复杂化并且有一个平滑的“rails方式”来做到这一点?
谢谢!