将csv文件导入数据库时​​,Ruby on rails Unknow属性

时间:2017-03-28 12:33:07

标签: ruby-on-rails csv sqlite sqlite3-ruby

我试图将一个csv文件导入rails app数据库上的ruby。运行 <script type="text/x-kendo-tmpl" id="checkBoxListTemplate"> <div style='margin-left:5px;'> <label style='font-weight: normal;'> <input type="checkbox" />#: Title# </label> </div> </script> var _data = []; _data.push({"Title" : "123", "IsChecked" : true}); _data.push({"Title" : "ABCD", "IsChecked" : false}); var _dataSource = new kendo.data.DataSource({ data: _data }); $("#lstView").kendoListView({ dataSource: _dataSource, template: kendo.template($("#checkBoxListTemplate").html()) }); 时出现此错误unknown attribute '2191' for Landslide.。 2191是csv文件第一行的第一项。

import_csv.rake

bundle exec rake db:import_csv

模式

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

1 个答案:

答案 0 :(得分:0)

据我所知,如果你使用row_to哈希,你的csv头必须与模型属性匹配。

require "csv"

HEADER_MAP = {
  "Total" => :total_id,
}

HEADER_CONVERTER = ->(header) {
  HEADER_MAP.fetch(header, header).to_sym
}

csv = <<END
 Column1,Column2,EXT:MAT:PIDTC
 100,200,300
 400,500,600
END

CSV.new(csv, headers: true, header_converters: HEADER_CONVERTER).each do   |row|
  p row.to_hash
end