#やりたいこと
RailsアプリでCSVをDBにインポートしたいのですが、以下のコードではCSVの1列目が読み込まれません。
どうすればいいでしょうか?
#できていること
1列目以外はDBに読み込めます。
以下のコードでは1列目のAAA以外は読み込めます。
rb
1 2class SampleModel < ApplicationRecord 3 # 使用するライブラリを読み込む 4 require 'kconv' 5 require 'csv' 6 7 HEADER_TO_SYM_MAP = { 8 'AAA' => :aa_no, 9 'BBB' => :bb_no, 10 } 11 UTF8_CONVERTER = ->(field) { field.encode('utf-8', invalid: :replace, undef: :replace, replace: "") } 12 13 def self.import(file) 14 self.all.delete_all 15 header_converter = lambda { |h| HEADER_TO_SYM_MAP[h] } 16 CSV.foreach(file.path, encoding: "Shift_JIS", headers: :first_row, header_converters: header_converter, skip_blanks: true) do |row| 17 sample_model = new 18 sample_model.aa_no = row[:aa_no], 19 sample_model.bb_no = row[:bb_no], 20 kanzi_question.save! 21 end 22 end 23end
#環境
・Mac
・csv:Numbersから生成
#追記
NumbersからCSVを生成すると、1行目と1列目がヘッダー扱いになっているのかも?
どんな状態であろうと1列目は無条件で読み込みたいです。
#BOMの調査
ターミナルで$file 表1.csv
を実行しました
表1.csv: Non-ISO extended-ASCII text, with CRLF, NEL line terminators

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。