Ruby 尝试写入SQLite数据库时获取NoMethodError
我正在与Sinatra合作,创建一种方法,从行分隔的文本文件中获取数据,并将其存储在SQLite数据库中。我正在使用DataMapper创建我的类,如下所示: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,
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参数时会显示什么