从多个模型将数据导出为CSV

时间:2017-10-01 05:31:27

标签: ruby-on-rails csv

我能够将模型的所有字段导出到CSV文件,但现在我需要从另一个与原始模型具有has_many关系的模型中添加一些属性。

我的控制器文件看起来像

Address

student.rb

<Binding Source="{StaticResource ServerData}" XPath="Server/Address" />

它工作正常,但因为业余爱好是与学生有很多关系的另一张桌子,因为学生有很多爱好,我想在csv中为每个学生显示爱好作为逗号分隔列表。我对如何实现这一点感到困惑。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我会做这样的事情:

CSV_HEADER = %w[surname given_name admission_year admission_no hobbies]
def self.as_csv
  CSV.generate do |csv|
    csv << CSV_HEADER
    all.each do |student|
      csv << [
        student.surname, 
        student.given_name, 
        student.admission_year,
        student.admission_no,
        student.hobbies.pluck(:title).join(', ')
      ]
    end
  end
end

您可能需要使用将爱好作为字符串返回的属性名称调整title