我正在尝试在IRB中执行以下操作:
file = CSV.read('branches.csv', headers:true)
file.each do |branch|
Branch.create(attributes:branch.to_hash)
end
branches.csv
包含一个标题为business_name
的标题,该标题应映射到同名Branch
的属性,但我看到错误:
ActiveRecord::UnknownAttributeError: unknown attribute 'business_name' for Branch.
奇怪的是,Branch.create(business_name:'test')
做得很好,没有任何问题。
更新
我认为这与Excel生成的UTF-8 CSV文本的编码有关,如下面的评论所示。不确定此IRB是否提供任何线索......但我们的标题标题为business_name
!= "business_name"
2.3.3 :348 > file = CSV.read('x.csv', headers:true)
#<CSV::Table mode:col_or_row row_count:165>
2.3.3 :349 > puts file.first.to_hash.first.first
business_name
2.3.3 :350 > file = CSV.read('x.csv', headers:true)
#<CSV::Table mode:col_or_row row_count:165>
2.3.3 :351 > puts file.first.to_hash.first.first == "business_name"
false
答案 0 :(得分:2)
跳过attributes:
部分。根本不需要它,因为branch.to_hash
已经完全返回您在上一句中描述的格式。
file = CSV.read('branches.csv', headers:true)
file.each { |branch| Branch.create(branch.to_hash) }