Ошибка DataMapper с моделями (`fetch': ключ не найден::precision (KeyError))
Действительно новичок в программировании и в сообществе программистов, и это только мой второй проект по программированию на ruby, поэтому извините, если я упускаю что-то очевидное или делаю что-то неправильно.
В этом проекте я пытаюсь создать базу данных с помощью Datamapper. База данных должна включать три объекта: Пользователь, Категория и Класс. Пользователь может иметь несколько категорий, а категория может принадлежать многим пользователям, поэтому я связал эти два объекта с категорией UserCategory, чтобы создать отношение "многие-многие". Другая связь между категорией и классом заключается в том, что у объекта категории может быть много классов, но класс может принадлежать только одной категории. Это моя база данных:
require "sinatra"
require "data_mapper"
if ENV['RACK_ENV'] == 'production'
DataMapper.setup(:default, ENV['DATABASE_URL'])
else
DataMapper.setup(:default, "sqlite:online-arena.db")
end
class User
include DataMapper::Resource
property :id, Serial
property :username, String,
:required => true,
:unique => true
property :password, BCryptHash, :required => true
validates_confirmation_of :password
attr_accessor :password_confirmation
validates_length_of :password_confirmation, :min => 6
def valid_password?(unhashed_password)
self.password == unhashed_password
end
property :admin, Boolean, default: false
has n, :user_categories
has n, :categories, through: :user_categories
end
class UserCategory
include DataMapper::Resource
property :id, Serial
belongs_to :user
belongs_to :category
end
class Category
include DataMapper::Resource
property :id, Serial
property :title, String
has n, :class
has n, :user_categories
has n, :users, through: :user_categories
end
class Class
include DataMapper::Resource
property :id, Serial
property :name, String
property :teacher, String
property :spots, Integer
belongs_to :category
end
DataMapper.finalize
DataMapper.auto_upgrade!
Это драгоценные камни, которые я использую для этого проекта:
source "https://rubygems.org"
gem "sinatra"
gem "data_mapper"
gem "bcrypt"
gem "rake"
group :development do
gem "sqlite3"
gem "dm-sqlite-adapter"
gem "dotenv"
gem "rerun"
end
group :production do
gem "pg"
gem "dm-postgres-adapter"
end
Я использую Cloud9 для работы над этим проектом, и до сих пор у меня есть "пакетная установка - без производства", а затем я запустил его с "ruby online-arena.rb -p $PORT -o $IP", но это дает мне эта ошибка:
/usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-core-1.2.1/lib/dm-core/property/numeric.rb:19:in `fetch': key not found: :precision (KeyError)
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-core-1.2.1/lib/dm-core/property/numeric.rb:19:in `initialize'
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-core-1.2.1/lib/dm-core/property/integer.rb:15:in `initialize'
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-core-1.2.1/lib/dm-core/model/property.rb:55:in `new'
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-core-1.2.1/lib/dm-core/model/property.rb:55:in `property'
from /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/dm-validations-1.2.0/lib/dm-validations/auto_validate.rb:11:in `property'
from /home/ubuntu/workspace/models.rb:49:in `<class:Class>'
from /home/ubuntu/workspace/models.rb:46:in `<top (required)>'
from /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from /home/ubuntu/workspace/environment.rb:5:in `<top (required)>'
from /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:121:in `require'
from online-arena.rb:4:in `<main>'
Если информации недостаточно, вот остальные файлы на моем github https://github.com/FuriousPenguins/Online-Arena
Я попытался использовать модель базы данных моего предыдущего проекта, которая имеет похожую структуру:
https://github.com/kichoy/lunch-reviews/blob/master/models.rb
и я смог запустить приложение.