2013-06-01 2 views
0

У меня есть две модели, как показано ниже. Экземпляр Share может иметь несколько экземпляров Color. Я использую MongoMapper для управления этими моделями. Когда я Share.create, я получаю следующее сообщение об ошибке:MongoMapper и NameError: неинициализированная константа

NameError: uninitialized constant Color

Может кто-нибудь сказать мне, почему это?

/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 

Это где я пытаюсь создать экземпляры:

/маршруты/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 

ответ

1

Оказалось, что у меня не может быть модели с именем Color. Я предполагаю, что это зарезервированное имя. Изменение его на ShareColor решило проблему.

0

Поскольку вы используете Si natra, вам нужно загрузить все модели, которые вы используете вручную, с помощью инструкции require. requireloads a file и выполняет все его утверждения, но также гарантирует, что один и тот же файл не загружается дважды.

+0

Если вы не можете вместить все в один файл, проект, возможно, слишком большой для синатра. В противном случае, как указано выше, вам нужно будет потребовать. – three

+0

@Lukas_Skywalker Я не могу понять, где мне нужно «требовать». Теперь мне нужна модель «Цвет» в модели «Share» и наоборот. В 'api.rb' я потребовал их обоих, но получаю ту же ошибку. – simonbs

+0

@three Я предполагаю, что могу поместить все в один файл, мне просто нравится структура, когда я держу все в отдельных файлах. – simonbs

Смежные вопросы