首页 > 解决方案 > 为整个 Rails 应用程序更改 CSV 的列分隔符

问题描述

我正在使用CSV.generate我的 rails 应用程序()中的默认列分隔符(“,”)来生成 CSV Rails 4.2.4 & ruby version ruby 2.2.4p230

我现在需要将列分隔符更新为;,我可以这样做,CSV.generate(:col_sep => ";")但我必须在很多地方更换。

我想知道我们是否可以在应用程序中的某个通用位置设置列分隔符,该位置适用于所有人CSV.generate,而不是在每个单独的位置更改。

谢谢。

标签: ruby-on-railsrubycsv

解决方案


它不是(当前)可以全局设置的选项。但是,您可以编写一个覆盖initialize并在您当前使用的地方使用它的包装器CSV

class SSV < CSV
  # Uses Ruby 2.2.4 semantics instead of named parameters used in later versions.
  def initialize(data, options = Hash.new)
    super(data, options.merge(col_sep: ';'))
  end
end

SSV.generate('') { |ssv| ssv << ['foo', 'bar', ';'] } # => "foo;bar;\";\"\n"

(确保在一些测试中包装它。)


推荐阅读