我是RoR的新手。 我想动态添加csv文件中的属性,以便我的代码能够动态读取任何csv文件并构建db(即将任何CSV文件转换为Ruby对象)
我使用的是以下代码
csv_data = File.read('myData.csv')
csv = CSV.parse(csv_data, :headers => true, :header_converters => :symbol)
csv.each do |row|
MyModel.create!(row.to_hash)
end
然而,对于以下示例,它将失败
myData.csv
Name,id
foo,1
bar,10
myData2.csv
Name,value
foo,1
bar,10
这将导致myData2出错,因为该值不是MyModel中的参数
MyModel的未知属性'value'。
我考虑过使用send(:attrAccessor,name),但我不确定如何在阅读csv,任何想法时整合它?
答案 0 :(得分:0)
您正在正确地执行此操作,但您也可以批量上传记录
csv_data =
CSV.read("#{Rails.root}/myData.csv",
headers: true,
header_converters: :symbol
).map(&:to_hash)
MyModel.create(csv_data)
注意:如果数据相同,您可以使用 seeds.rb