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
中,我需要这两个文件,但我得到了相同的错误。@三个我想我可以将所有内容都放在一个文件中,我只是更喜欢将所有内容放在单独的文件中时的结构。