我正在尝试从excel 2010
工作簿中检索一些数据,并使用sqlite3
和Rails
存储到Roo gem
数据库中。应用程序未按要求将所有属性保存到数据库。
这是我在受益人模型中的导入方法
def self.import(file)
spreadsheet = open_spreadsheet(file)
spreadsheet.each_with_pagename do |name, sheet|
for i in 1..sheet.last_row do
beneficiary = Beneficiary.new()
beneficiary.name, beneficiary.gender, beneficiary.age, beneficiary.in_school, beneficiary.venue =
sheet.excelx_value(i, 2), sheet.excelx_value(i, 3), sheet.excelx_value(i, 4), sheet.excelx_value(i, 5), sheet.excelx_value(1, 1)
beneficiary.save!
end
end
end
def self.open_spreadsheet(file)
case File.extname(file.original_filename)
when ".csv" then
Roo::CSV.new(file.path)
when ".xls" then
Roo::Excel.new(file.path)
when ".xlsx" then
Roo::Excelx.new(file.path)
else
raise "Unknown file type: #{file.original_filename}"
end
end
这是我的数据库迁移脚本:
class CreateBeneficiaries < ActiveRecord::Migration
def change
create_table :beneficiaries do |t|
t.string :name #, null: false
t.integer :age #, null: false
t.string :gender #, null: false
t.string :in_school #, null: false
t.string :venue
t.string :learning_center
t.string :facilitator
t.timestamps null: false
end
end
end
当我包含not null
约束时,我遇到了错误,但当我删除它们时,某些属性未保存。因此我认为问题出在我的import
方法上,但我不知道为什么。
非常感谢任何帮助。