我必須在以下格式的文本文件中的一些數據:保存數據
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
我想編寫一個Ruby腳本,可以把這個數據並將其存儲在SQLite數據庫該表的列將是:名稱,值1,值2,值3,...,值11。並且這些行是文件每一行上的每條數據,因此該表的第一行將是:Cat,3,24,2,2,4,6,4,7,6,0,0。
我有我的數據類的設置如下:
require 'dm-core'
require 'dm-migrations'
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
class Data
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我試圖寫下來,可以分析這個數據並創建,並將其寫入到數據庫的邏輯。我也用這個Sinatra。我該如何去做呢?
編輯:更新app.rb文件
require 'sinatra'
require 'slim'
require 'sass'
require './Names'
require 'rubygems'
require 'data_mapper'
get '/' do
File.readlines("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 #class renamed to Names
my_data.save
end
end
當我這樣做,我得到一個NoMethodError - 爲名稱未定義的方法`驗證器:類。
歡迎堆棧溢出。使用「編輯」或「更新」標籤沒有必要或者特別理想。取而代之的是將變化納入考慮範圍,因爲內容是有意義的和流動的。如果我們感興趣,我們可以看到有什麼變化。 –