2016-06-28 4 views
0

私はRailsを初めて使用しています。単純なdbインポートを実行していますが、エラーは解決できません。Rails:CSVからActiveRecordにインポートすると、モデルに「NoMethodError:undefined method」が返されます

私はそうCSVのようにデータを持っている:

"Symbol","Name","LastSale","MarketCap","IPOyear","Sector","industry","Summary Quote", 
"DDD","3D Systems Corporation","12.95","$1.45B","n/a","Technology","Computer Software: Prepackaged Software","http://www.nasdaq.com/symbol/ddd", 

私は、次のコマンドを使用して、エントリのためのモデル作成:

bin/rails generate model Companies Symbol:string Name:string LastSale:string MarketCap:string IPOyear:string Sector:string Industry:string SummaryQuote:string 

を...私はデシベルを実行します。その後、移行、およびこのrakeタスクをモデルにデータをインポートしよう:

task :populate => :environment do 
    #http://stackoverflow.com/questions/4410794/ruby-on-rails-import-data-from-a-csv-file 
    CSV.foreach("companylist.csv", :headers => true) do |row| 
     Company.create!(row.to_hash) 
    end 
    end 

これはエラーになります:

ただし、「企業」モデルは業界の特典で作成されました。どのように進むべきかはわかりません。

ありがとうございました!

+1

というのは、列名に大文字を使用したためです。つまり、「産業」ではなく「産業」ですか。 – Kris

+1

Rubyでは大文字と小文字が区別されます。私はCSVの 'row.to_hash'が列名のダウンケージを行うかどうかは分かりませんが、そうは思われます。ハッシュがあなたのモデルに到達すると、それはそこにない 'industry'属性に割り当てようとします。 「業種」がありますが、それは一致しません。 –

+0

アトリビュートと一致するようにカラム名を変更すると、その問題は解決されますが、新しいエラー「Company」のActiveRecord :: UnknownAttributeError:unknownアトリビュートが作成されます。「 – manglano

答えて

0

私はテーブルのフィールド名を確認する必要があると思う、私はテーブルのフィールド名は産業の代わりに '産業'と思う。 最高

関連する問題