1

CSVファイルとしてエクスポートしたいネストされたデータを含むRailsアプリがあります

モデルは次のようになります。

class ContainerRecord < ActiveRecord::Base
  has_many      :child_records 

class ChildRecord < ActiveRecord::Base
  belongs_to :container_record

行に各ContainerRecordがあり、最初の数列に情報があり、残りの列に各ChildRecordの値があるCSVファイルをエクスポートできるようにしたいと思います。

各ContainerRecordに関連付けられているChildRecordの数を保証することはできません。また、行ごとにnull以外の列の数が異なっていてもかまいません。

FasterCSVを使用しようとしましたが、子レコードのすべてのデータが、それぞれの列ではなく1つの列に表示されます。

これはFasterCSVでできることですか?そうでない場合、目標を達成するためにどのような方法を使用できますか?

4

2 に答える 2

2

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」を子モデルから取得するフィールドに置き換えます。

于 2010-03-05T23:02:16.290 に答える
2

csv_builderで、最小限の労力でやりたいことを正確に実行できる優れたチュートリアルを見つけ、MVCアーキテクチャにもう少し近づけることができました。

于 2010-03-08T15:55:50.983 に答える