0

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方法にあると思いますが、理由はわかりません。

どんな助けでも大歓迎です。

4

0 に答える 0