Ruby MongoMapper和NameError:未初始化常量

Ruby MongoMapper和NameError:未初始化常量,ruby,sinatra,mongomapper,Ruby,Sinatra,Mongomapper,我有两个模型,如下所示。Share的一个实例可能有多个Color实例。我正在使用MongoMapper来管理这些模型。 当我执行Share.create时,出现以下错误: NameError:未初始化的常量颜色 谁能告诉我这是为什么 /型号/share.rb: class Share include MongoMapper::Document key :shorten_id, String key :name, String many :colors, :class_name

我有两个模型,如下所示。
Share
的一个实例可能有多个
Color
实例。我正在使用MongoMapper来管理这些模型。 当我执行
Share.create
时,出现以下错误:

NameError:未初始化的常量颜色

谁能告诉我这是为什么

/型号/share.rb:

class Share
  include MongoMapper::Document

  key :shorten_id, String
  key :name, String
  many :colors, :class_name => "Color"
  timestamps!
end
/型号/color.rb:

class Color
   include MongoMapper::Document

   key :celcius, Float
   key :hue, Float
   key :saturation, Float
   key :brightness, Float
   belongs_to :share, :class_name => "Share"
   timestamps!
end
这是我尝试创建实例的地方:

/路由/api.rb:

require 'json'

class App < Sinatra::Base
  register Sinatra::Namespace

  namespace '/api' do
    before do
      protected!
    end

    get '/shares' do
      content_type 'application/json'
      Share.all.to_json
    end

    post '/share' do
      @share = Share.create
      @share.save
    end
  end
end
require'json'
类应用程序
由于您使用的是Sinatra,因此需要通过
require
语句手动加载您使用的所有型号
require
并执行其所有语句,但也确保同一文件不会加载两次。

结果是,我无法拥有名为
Color
的模型。我想这是个保留的名字。将其更改为
ShareColor
解决了这个问题。

如果您不能将所有内容都放在一个文件中,那么您的项目对于sinatra来说可能太大了。否则如上所述,您需要要求。@Lukas_Skywalker我不知道在哪里需要
要求
。现在我需要
共享
模型中的
颜色
模型,反之亦然。在
api.rb
中,我需要这两个文件,但我得到了相同的错误。@三个我想我可以将所有内容都放在一个文件中,我只是更喜欢将所有内容放在单独的文件中时的结构。