用excel文件内容初始化对象并保存到数据库

我觉得我正在服用疯狂的药丸,但是我刚刚撞到了一堵砖墙,不能再对此进行破解了。 答案似乎很简单,但我的头脑麻木,我无法突破这堵墙。

我正在使用Roo gem来导入excel文档(xls格式)并将其推送到数组中。 我结束了arrays的数组。 很简单,这工作正常。

所以然后我尝试并采取该数组的值,并将其分配给对象的属性。 这个技巧似乎是对行进行迭代,将数组赋值给适当的对象属性,保存,然后移动到下一行。 我确定我正在做的是各种各样的垃圾,但是我被卡住了,想不到一个解决办法。

这是我的控制器:

class PlanesController < ApplicationController def new @plane = Plane.new @plane.upload end end 

这是我的模特:

  require 'roo' class Plane < ActiveRecord::Base attr_accessor :id, :name, :version def upload arr = [] sheet1 = Roo::Spreadsheet.open('lib/assets/test.xls') sheet1.each { |hash| arr<<hash} i = 0 while i < arr.length do @id = arr[i][0].to_int @name = arr[i][1] @version = arr[i][2] i += 1 end end end 

基本上是如何让我的值存储在'ARR'数组被分配给我的对象? 我希望@id结束Plane.id,它是由我的控制器通过实例variables@plane访问。 我觉得我这样做是错误的,因为我本质上是试图创build多个对象基于电子表格长,并保存每一个新的行来填充我的数据库。 就像我说的,可能是超级垃圾,但是我错过了一些基本的东西,并感谢帮助。

我只是改变了我的控制器的新行动,包括@person = Plane.create(plane_params) ,然后把plane_params在我包含在我的控制器模块…能够使用较新的Rails 4强参数,也导入.xls文件,所有这一切的单一方法(而不是我的模型,如果我使用.create回想起来没有多大意义)。 现在工作像一个魅力,但我想知道是否有一个gem/第三方插件为此铺设,我错过了。