我正在我的模型中生成CSV,以文件形式回复。
def self.to_csv
CSV.generate(col_sep: "\;") do |csv|
csv << ["1", "2", "3", "4", "5"]
all.each do |record|
csv << [record.date.to_s, record.text, (MessageCharacter.find_by_id(record.message_character_id).try(:name) || ""), record.commentable.name, record.user.name].map{|e| "#{e}"}
end
end
end
因此,我希望用引号括起所有内容,例如:
"1";"2";"3";"4";"5"
"value1";"value2";"value3";"value4";"value5"
但我得到的任何值都没有引号(如果在输入数据中我不用引号括起来),或者如果我用额外的引号括起来,我每个值都有3个引号!那么如何以上面显示的方式包装所有值?
答案 0 :(得分:4)
从force_quotes?()
开始,您可以使用force_quotes
选项,如下所示:
def self.to_csv
CSV.generate(col_sep: "\;", force_quotes: true) do |csv|
csv << ["1", "2", "3", "4", "5"]
all.each do |record|
csv << [record.date.to_s, record.text, (MessageCharacter.find_by_id(record.message_character_id).try(:name) || ""), record.commentable.name, record.user.name].map{|e| "#{e}"}
end
end
end
您也可以指定与quote_char: '"'
一起使用的引号,但双引号仍然是标准。