从CSV.foreach'早期打破枚举

时间:2017-10-04 21:09:27

标签: ruby csv

我想验证我的文件。

  • 应该逐行解析文件(而不是将整个文件读入内存)。
  • 一旦通过测试就应该退出。
  • 如果vendor_codes中的任何一个与提供的vendor_code匹配,则应认为该文件有效。

一些代码:

error = "WRONG VENDOR DUMMY. This is #{account.vendor_code}"
CSV.foreach(file, options) do |row|
  if row[:vendor].to_s == account.vendor_code.to_s
    error = false
    break
  else
    next
  end
end
raise(error) if error

有更优雅的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为这种做法更好:

valid = CSV.foreach(file, options).any? do |row|
  row[:vendor].to_s == account.vendor_code.to_s
end
raise("WRONG VENDOR DUMMY. This is #{account.vendor_code}") unless valid