Экспорт вложенных объектов в файл CSV - PullRequest
1 голос
/ 06 марта 2010

У меня есть приложение rails с некоторыми вложенными данными, которые я хотел бы экспортировать в виде файла CSV

Модели выглядят так:

class ContainerRecord < ActiveRecord::Base
  has_many      :child_records 

и

class ChildRecord < ActiveRecord::Base
  belongs_to :container_record

Я бы хотел иметь возможность экспортировать CSV-файл с каждым ContainerRecord в строке с информацией в первых нескольких столбцах и значением из каждого ChildRecord в оставшихся столбцах.

Я не могугарантирую количество ChildRecords, связанных с каждым ContainerRecord, и мне все равно, если у меня будет разное число ненулевых столбцов для каждой строки.

Я пытался использовать FasterCSV, но я получаю вседанные для дочерних записей помещаются в один столбец, а не в столбец для каждого.

Могу ли я это сделать с помощью FasterCSV?Если нет, какой метод я могу использовать для достижения своей цели?

Ответы [ 2 ]

2 голосов
/ 08 марта 2010

Я закончил тем, что нашел хороший учебник по csv_builder , который позволил мне делать именно то, что я хотел, с минимальными усилиями и позволил мне немного ближе придерживаться архитектуры MVC.

2 голосов
/ 06 марта 2010

Не уверен насчет 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" полем, которое вы, конечно, хотите взять из модели вашего ребенка.

...