我正在尝试从excel 2010
工作簿中检索一些数据并使用 and 存储到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
方法上,但我不知道为什么。
任何帮助都感激不尽。