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
方法にあると思いますが、理由はわかりません。
どんな助けでも大歓迎です。