我有两个模型,如下所示。 Share
的实例可能包含Color
的多个实例。我正在使用MongoMapper来管理这些模型。
当我Share.create
时,我收到以下错误:
NameError:未初始化的常量颜色
谁能告诉我为什么会这样?
/models/share.rb:
class Share
include MongoMapper::Document
key :shorten_id, String
key :name, String
many :colors, :class_name => "Color"
timestamps!
end
/models/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
这是我尝试创建实例的地方:
/routes/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
答案 0 :(得分:1)
事实证明我没有名为Color
的模型。我想这是一个保留的名字。将其更改为ShareColor
解决了问题。
答案 1 :(得分:0)
由于您使用的是Sinatra,因此需要通过require
语句手动加载您手动使用的所有模型。 require
loads a file并执行其所有语句,但也确保同一文件未加载两次。