2014-09-23 3 views
2

Извините за мой простой вопрос, потому что я так новичок во всем.Импорт файла csv на Ruby on Rails

Как я уже говорил, я хотел импортировать файл csv с линией заголовка в существующую таблицу данных. Даже я пробовал в течение 4 дней с этими ответами (и другими гуглингами) Trouble importing csv file with ruby CSV Module и Ruby on Rails - Import Data from a CSV file , но я не мог найти пути.

# db/migrate/20140923064239_create_restaurants.rb 
class CreateRestaurants < ActiveRecord::Migration 
    def change 
    create_table :restaurants do |t| 
     t.string :restaurant_category 
     t.string :restaurant_subcategory 
     t.timestamps 
    end 
    end 
end 

# lib/tasks/import.rake 
require 'csv' 

CSV.foreach("english.csv", :headers => true) do |row| 
    Restaurant.create!(row.to_hash) 
end 

# english.csv 
restaurant_category,restaurant_subcategory 
kor,bakban 
kor,galbi 
kor,gobchang 
kor,hanjeong 
kor,hajang 
kor,dolsot 
kor,bude 
kor,jokbal 
kor,sullung 
chin,ssambab 
chin,dubu 
chin,jechum 
chin,pajeon 

Тогда я сделал rake db:migrate, и получил сообщение об ошибке NameError: uninitialized constant Restaurant. Я пробовал много других способов в google, но каждый раз это сообщение об ошибке появилось. Я только сейчас полагаю, что моя существующая таблица ресторанов не работает для этого процесса грабли (хотя я не знаю, что это означает это сообщение об ошибке).

Так что, пожалуйста, помогите мне в решении этой проблемы, и я очень сожалею о непростой проблеме. Но слишком тяжело для меня, и у меня не было возможности его решить. Благодарю.

ответ

2

Создайте задачу грабли для того же самого. Отредактируйте файл import.rake в

require 'csv' 
namespace :db do 
    task :import_csv => :environment do 
    CSV.foreach("english.csv", :headers => true) do |row| 
     Restaurant.create!(row.to_hash) 
    end 
    end 
end 

И запустить bundle exec rake db:import_csv

+0

Ничего себе, я должен был спросить его раньше. Огромное спасибо!!!!!! Я не знал этого «пространства имен». Я должен узнать больше, может быть. Спасибо! –

+0

@JeongbinKim Добро пожаловать! :) и все лучшее для обучения больше. – Jyothu

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