0

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

任何帮助都感激不尽。

4

0 回答 0