2011-11-15 16 views
1

私はruby 1.9.2とRails 3.0.7を使用しています。私は、cronジョブを使用して15分ごとに1つのCSVファイルを作成するルビーバックエンドスクリプトを書いています。CSVファイルの解析時に空の値を返す方法は?

バックエンドRubyスクリプト:正常に作成上記のスクリプトのCSVファイル(count.csv)から

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 

。 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の実行を停止または開始する必要があります、誰も私を解決するか、任意の提案に役立つことができますか?前もって感謝します。

+0

コードはわかりやすく表示されます。 '@id'が初期化されていますか? –

+0

@ダニエル - はい私は初期化しました。この問題は、ルビスクリプト実行時に発生します。 Railsのレポート側では、すべてのデータがゼロになっています。私はどうしたの?任意の推測? – prabu

+0

Railsで単に 'obj.get_count'を呼び出すのではなく、なぜこれをやっていますか? –

答えて

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 
関連する問題