Ошибка 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

и я смог запустить приложение.

0 ответов

Другие вопросы по тегам