尝试写入SQLite数据库时获取NoMethodError

时间:2016-12-07 07:20:56

标签: ruby sinatra

我正在与Sinatra合作创建一种从行分隔文本文件中获取数据并将其存储在SQLite数据库中的方法。我使用DataMapper创建了我的类,如下所示:

require 'dm-core'
require 'dm-migrations'


DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")

class Names
  include DataMapper::Resource
  property :id, Serial
  property :name, String
  property :value1, Integer
  property :value2, Integer
  property :value3, Integer
  property :value4, Integer
  property :value5, Integer
  property :value6, Integer
  property :value7, Integer
  property :value8, Integer
  property :value9, Integer
  property :value10, Integer
  property :value11, Integer
end

DataMapper.finalize
DataMapper.auto_upgrade!

在我的app.rb中,我运行以下代码:

require 'sinatra'
require './Names'
require 'rubygems'
require 'data_mapper'
 # persist the resource

get '/' do
  File.foreach("names-data.txt").each do |line|
    name, *values = line.split
    params = {:name => name}
    values.each_with_index do |value, i|
      params[:"value#{i+1}"] = value
    end
    my_data = Names.new params
    my_data.save
  end
end

文本文件采用以下格式:

Cat 3 24 2 2 4 6 4 7 6 0 0
Dog 18 0 8 2 42 6 6 4 5 8 0 
Mouse 8 1 2 2 4 6 4 7 6 0 0
Rabbit 8 10 8 26 46 2 6 7 6 10 0

当我运行我的代码时,它会创建一个包含正确列的数据库,但不会填充行。相反,它给了我以下错误:

  

NoMethodError / undefined方法`验证器' for Names:Class Did   你的意思是?可验证?

这是什么意思,我该如何解决?

0 个答案:

没有答案
相关问题