2016-09-21 3 views
0

Я загружаю свою базу данных тегами, написанными в файле под названием tags.csv. Мне удалось засеять теги, однако, когда я проверяю свою консоль, я вижу символ \ n в качестве последнего символа имени тега. Например, скажем, что самолет - это имя тега, когда я семя, я получаю имя тега как самолет \ n Что я делаю неправильно?Как удалить символ « n» из записей csv?

Мои дб/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 
+0

'\ n' означает ** Return Key **. Читая файл строки за строкой, просто исключайте в основном последние два символа в строках или найдите подстроку '\ n' и удалите из строк. – mertyildiran

+0

Ну, во-первых, это не похоже на файл CSV, он выглядит как «обратный» раздел, и вы используете какой-либо разделитель, который хотите использовать в CSV-библиотеке, - если вы проверите его – MageeWorld

+0

@mertyildiran Я понятия не имею, как вы сделали бы это с помощью метода File.read – codigomonstruo

ответ

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 
+0

Я решил это уже. Пришлось использовать простой тег = row.gsub ('\ n', ''), чтобы удалить \ n – codigomonstruo

+0

отлично .......... –

+0

Спасибо в любом случае !! – codigomonstruo

Смежные вопросы