すべての行が特定の期間、番号などを持つ1つの呼び出しを表す行を持つ.csvファイルがあります。Callオブジェクトの配列を作成する必要があります。パラメータのハッシュは簡単です.CSVから行を取得するだけです。しかし何らかの理由でそれがうまくいきません - 私がCall.new(raw_call)
を呼び出すと、それはnil
です。 私は出力を見ることも不可能です - 私はputs
をコードのさまざまな場所(ブロック内など)に配置し、単に何も表示しません。私は明らかに別のクラスがある - 私の.csvファイルの小さなサンプルRuby - .csvから読み込んでオブジェクトを作成する
require 'csv'
class CSVCallParser
attr_accessor :io
def initialize(io)
self.io = io
end
NAMES = {
a: :date,
b: :service,
c: :phone_number,
d: :duration,
e: :unit,
f: :cost
}
def run
parse do |raw_call|
parse_call(raw_call)
end
end
private
def parse_call(raw_call)
NAMES.each_with_object({}) do |name, title, memo|
memo[name] = raw_call[title.to_s]
end
end
def parse(&block)
CSV.parse(io, headers: true, header_converters: :symbol, &block)
end
end
CSVCallParser.new(ARGV[0]).run
Call
、コールのために初期化し保持しているなど:ヘッダと1行:
"a","b","c","d","e","f"
"01.09.2016 08:49","International","48627843111","0:29","","0,00"
作業しているcsvファイルのサンプルを少し提供できますか?だから私はあなたのコードを再現し、何が起こっているのを見ることができます – davidhu2000
確かに、私は私の投稿を編集しました:) – Jes