如何删除" \ n"来自csv条目的字符?

时间:2016-09-21 00:58:29

标签: ruby-on-rails csv seeding

我正在使用名为tags.csv的文件上的标签播种我的数据库。我能够为标签播种,但是,当我在我的控制台中检查时,我看到一个字符\ n作为标记名称的最后一个字符。例如,假设飞机是标签名称,当我播种时,我将标签名称设为 airplane \ n 我做错了什么?

我的 db / tags.csv 是包含标记条目的csv文件,它看起来像这样:

airplane
sleeping
travel 

现在在我的 seeds.rb 文件中(应该播种标签)看起来像:

puts "loading tags..."

# LOADING TAGS
GOD_USER_ID = -1
csv_text    = File.read('db/tags.csv')
csv         = CSV.parse(csv_text, :headers => true)

puts "loading tags..."

csv.each_with_index do |row, index| 
  tag = row
  if ActsAsTaggableOn::Tag.exists?(name: tag, user_id: GOD_USER_ID, privacy: 'PUBLIC') == false then
    ActsAsTaggableOn::Tag.create(name: tag, user_id: GOD_USER_ID, privacy: 'PUBLIC') 
    if index % 10 == 0
        puts "tag: #{tag} --- index: #{index}"
    end
  else
    if index % 10 == 0
        puts "tag: #{tag}\t(already exists) --- index: #{index}"
    end
  end
end

1 个答案:

答案 0 :(得分:0)

使用foreach它应该可以正常使用

puts "loading tags..."

# LOADING TAGS
GOD_USER_ID = -1
puts "loading tags..."

CSV.foreach("#{Rails.root}/db/tags.csv", headers: true) do |row|
  if ActsAsTaggableOn::Tag.exists?(name: tag, user_id: GOD_USER_ID, privacy: 'PUBLIC')
    puts "tag: #{tag}\t(already exists) --- index: #{index}" if index % 10 == 0
  else
    ActsAsTaggableOn::Tag.create(name: tag, user_id: GOD_USER_ID, privacy: 'PUBLIC')
    puts "tag: #{tag} --- index: #{index}" if index % 10 == 0
  end
end