использование mongoid на sinatra, наследование модели вызывает «неинициализированную константу» имя модели (родительский класс) - PullRequest
2 голосов
/ 08 декабря 2011

Я использую Mongoid на Синатре. И я использую

Dir.glob(File.join(File.dirname(__FILE__),'models','*.rb')).each do |file|
  require file
end

для загрузки файлов моделей mongoid.

Я пытался добавить модель B, наследуемую от A, например:

Модели / a.rb:

class A
  include Mongoid::Document
  include Mongoid::Timestamps
  field :custom_id, type: Integer
end

Модели / b.rb

class B < A
  field :title , type: String
  field :body , type: String
end

Но когда я запускаю приложение, у меня появляются ошибки:

uninitialized constant A (NameError)

Так что я пытаюсь найти решение для этого, это можно исправить, добавив:

require A

на вершине модели B, но я думаю, что это не очень хороший способ ее решить.

Так есть ли другой способ исправить это?


Привет

1 Ответ

1 голос
/ 06 апреля 2012

Вам просто нужен файл, в котором вы определяете класс.

У Синатры нет системы auto_load, как у рельсов. Так что вам нужно выполнить все ваши требования.

require 'a'
class B < A
  field :title , type: String
  field :body , type: String
end
...