也许是一个古怪的问题。做一个Model.all之类的东西让我得到一个相当漂亮的数组输出[#<Model id:5, name:"Blahblah">,#<Model id:5, name:"Etc">]
。有没有一种简单的方法可以将其转换为CSV / Excel格式,其属性为列?
答案 0 :(得分:2)
是
使用FasterCSV gem从模型列表中生成CSV。
但是没有好办法自动完成。因此,您应该为模型添加一个类方法,从数组中生成CSV。
示例:
class Model < ActiveRecord::Base
require 'FCSV'
def self.to_csv list
csv_string = FasterCSV.generate do |csv|
attributes_for_csv = [:id, :name]
csv << attributes_for_csv.map{|a| a.to_s.titlize}
list.each do |item|
csv << attributes_for_csv.map{|a| item.send(a)}
emd
end
...
end
Model.to_csv Model.all
警告:它不会是完美的,你仍然会得到一个以"
开头和结尾的字符串。但是删除开始和结束引号非常容易。