Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 尝试写入SQLite数据库时获取NoMethodError_Ruby_Sinatra - Fatal编程技术网

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

Ruby 尝试写入SQLite数据库时获取NoMethodError,ruby,sinatra,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,

我正在与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!
在my 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 at/undefined方法“validators”:类Did 你是说?可验证的


这是什么意思?我如何修复它?

在哪一行出现了该错误?您能发布完整的堆栈跟踪吗?+1,请显示完整的错误日志。您显示的第一个脚本名为
Names.rb
?Ruby文件名通常用小写字母书写
require./Names'
可能应该是“rubygems”和“data\u mapper”之后的最后一个require。当您在
my\u data=Names.new参数之前
p参数时会显示什么