【问题标题】:Export nested entities to CSV file将嵌套实体导出到 CSV 文件
【发布时间】:2010-03-05 22:15:45
【问题描述】:

我有一个带有一些嵌套数据的 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 做的事情吗?如果没有,我可以使用什么方法来实现我的目标?

【问题讨论】:

    标签: ruby-on-rails csv fastercsv


    【解决方案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”替换为您要从子模型中获取的字段。

    【讨论】:

    • 感谢您的解决方案,我最终在 csv_builder 上找到了一个不错的教程,并决定走这条路。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 1970-01-01
      • 2019-01-11
      • 2014-05-19
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多