前提・実現したいこと
ここに質問の内容を詳しく書いてください。
csvファイルを開いて配列の値を書き込みながら、Rankというtableに値をcreateする処理を作成したいです。
しかし、uninitialized constant Rank (NameError)とRankというモデルクラスが存在しないと怒られます。
app/models/rank.rbに定義されているのは確認しています。
発生している問題・エラーメッセージ
エラーメッセージ Traceback (most recent call last): 4: from test.rb:24:in `<main>' 3: from C:/Ruby25-x64/lib/ruby/2.5.0/csv.rb:1289:in `open' 2: from test.rb:25:in `block in <main>' 1: from test.rb:25:in `each' test.rb:27:in `block (2 levels) in <main>': uninitialized constant Rank (NameError) Did you mean? Range
該当のソースコード
ソースコード require 'csv' a = [[123000000, "a", "a"], [1000, "b" "b"], [500000, "c", "c"], [15000, "d", "d"], [20000, "", ""]] a.delete_if {|data| data[1] == ""} c = a.sort_by{|x| x[0]}.reverse p c c.each do |x| if x[0] >= 10000 x[0] = x[0].to_s if x[0].match(/(\d*)[0]{4}$/) x[0] = x[0].gsub(/(\d*)[0]{4}$/, '\1万人') elsif x[0].match(/(\d*)[0]{3}$/) x[0] = x[0].gsub(/(\d*)([1-9])[0]{3}$/, '\1.\2万人') else "例外です" end else x[0] = "#{x[0]}人" #x[0] = x[0].to_s.gsub(/(\d*)/, '\1人') end end p c csv_format = CSV.open("tet.csv", "w:UTF-8") do |test| c.each do |youtuber_data| test << youtuber_data rank = Rank.create(name: data[0], channel_id: data[1], number_of_registrant: data[2]) puts csv_format end end
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]