解析CSV文件时如何解决返回空值?

时间:2011-11-15 10:20:09

标签: ruby-on-rails ruby ruby-on-rails-3 csv

我使用的是ruby 1.9.2和Rails 3.0.7。我编写了ruby后端脚本,它将使用cron job每隔15分钟创建一个CSV文件。

后端ruby脚本:

 CSV.open("count.csv", 'wb',:col_sep=>',') do |csv|
 # header row
   csv << ['id', 'count']
   models = Model.all
   models.each do |obj|
      csv << [ obj.id, obj.get_count]
   end
 end

从上面创建的脚本CSV文件(count.csv)成功。在Rails应用程序中,

 CSV.foreach("count.csv", :quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true) do |row|
   count =  row["count"].to_i if row["id"].to_i == @id
 end 

我需要解析该CSV文件中的计数值。但问题是当cron执行的时间,我无法从该CSV文件获取计数值为所有记录返回零,并且在执行完成后我可以获得计数值。但我总是需要计数值cron执行是停止还是启动,任何人都可以帮我解决或任何建议吗?提前致谢。

1 个答案:

答案 0 :(得分:1)

models = Model.all
models.each do |obj|
  csv_string << [ obj.id, obj.get_count]
end

CSV.open("count.csv", 'wb',:col_sep=>',') do |csv|
# header row
 csv << ['id', 'count']
 csv << csv_string
end