Как суммировать строки CSV

У меня есть следующий код, который извлекает строки из текстового файла, я хотел бы суммировать все значения item_price, чтобы иметь возможность использовать его в моем приложении. Я хотел бы получить это значение из блока:

CSV.foreach(dir, col_sep: "\t", headers: true).map do |row|

Следуйте коду:

module ParseText
  def self.parse
    require 'csv'
    dir = Dir.glob("./public/system/file_attaches/files/*/*/*/*/*").max_by {|f| File.mtime(f)}
    CSV.foreach(dir, col_sep: "\t", headers: true).map do |row|
      records = row.to_h
      purchaser = records["purchaser name"]
      item_description = records["item description"]
      item_price = records["item price"]
      purchase_count = records["purchase count"]
      merchant_address = records["merchant_address"]
      merchant_name = records["merchant name"]

      Merchant.create(name: merchant_name)
      MerchantAddress.create(street: merchant_address, merchant_id: Merchant.last.id)
      Purchaser.create(name: purchaser, count: purchase_count, merchant_id: Merchant.last.id)
      Item.create(description: item_description, price: item_price, merchant_id: Merchant.last.id, purchaser_id: Purchaser.last.id )
    end
  end
end

1 ответ

Решение
CSV.foreach(dir, col_sep: "\t", headers: true).inject(0) do |price_sum, row|
  # Leave the code you already have here
  price_sum += item_price.to_i
end
Другие вопросы по тегам