2010-03-05 2 views
0

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

модель выглядит следующим образом:

class ContainerRecord < ActiveRecord::Base 
    has_many  :child_records 

и

class ChildRecord < ActiveRecord::Base 
    belongs_to :container_record 

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

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

Я попытался использовать 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

Смежные вопросы