実現したいこと
CSVファイルに入力されているデータをもとにデータベースへ初期データの投入をしたいと考えています。
db/seedsフォルダー直下にcsvをいくつかあるcsvフォルダーと、各csvファイルを実行するための分割されたseedファイルが保存されたscriptフォルダーがあり、seeds.rbを実行して、scriptフォルダー内のSeedファイルを実行するようにしています。
db
├── seeds
│ ├── csv
│ │ ├── NAWL.csv
│ │ ├── NGSL.csv
│ │ └── TSL.csv
│ └── script
│ ├── nawl.rb
│ ├── ngsl.rb
│ └── tsl.rb
└── seeds.rb
発生している問題・エラーメッセージ
afterward,その後,"『あとで』,以後,その後",I felt very light on my feet afterwards.,終わったあとも足が軽い感じがしました。,NAWL amongst,【前】~の間に;~の中の,=among,I don't like families that quarrel amongst themselves.,お互いに言い争いをする家族は嫌いです。,NAWL artistic,芸術的な,"『芸術的な』 芸術(美術)の;芸術家(美術家)の 美的感受性に富む,美のわかる",He turned his artistic gifts to good account by becoming a painter.,彼は画家になって芸術的な天分を生かした。,NAWL
CSVファイルのデータ内に改行箇所ができてしまい、Seedファイルを実行するとエラーが出てしまいます。
いくつか自分で調べてみましたが、なかなかうまくいきません。
どなたかよろしくお願いします。
seeds
1require "csv" 2 3Dir[File.join(Rails.root, 'db', 'seeds', 'script', '*.rb')].sort.each do |seed| 4 load seed 5end 6
db/script/seedファイル
1require "csv" 2 3csv_text = File.read('db/seeds/csv/NAWL.csv', encoding: 'encoding') 4csv_text = csv_text.gsub /^$\n/, '' 5i = 0 6 7@csv = CSV.parse(csv_text, headers: true, skip_blanks: true, row_sep: nil, col_sep: 'splitter') 8@csv.each do |row| 9 Englishlist.create( 10 word: row['word'], 11 meaning: row['meaning'], 12 commentary: row['commentary'], 13 example: row['example'], 14 example_meaning: row['example_meaning'], 15 wordtype: row['Wordtype'] 16 ) 17end 18
参考にしたサイト
(https://qiita.com/KTakata/items/86020670f84a1f858778)
(https://docs.ruby-lang.org/ja/2.0.0/method/CSV/s/new.html)
(https://qiita.com/swdyh/items/884a0cade2e5fcebfd8b)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。