2009-12-01 37 views
0

也许是一个古怪的问题。做一个Model.all或类似的东西让我有点漂亮的数组输出,[#<Model id:5, name:"Blahblah">,#<Model id:5, name:"Etc">]。有没有简单的方法将其转换为CSV/Excel格式的属性作为列?解析Rails控制台输出到Excel中

回答

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 

警告:它不会是完美的,你仍然会得到启动,并与"结尾的字符串。但删除开始和结束引号非常简单。