在sinatra上使用mongoid,模型继承导致“未初始化的常量”modelname(父类)

时间:2011-12-08 09:04:41

标签: sinatra mongoid

我在Sinatra上使用Mongoid。我用

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

加载mongoid模型文件。

我尝试添加一个继承自A的模型B,如:

模型/ 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

但是当我执行App时,我遇到了错误:

uninitialized constant A (NameError)

所以我试图找到一个解决方案, 它可以通过添加来修复:

require A

在模型B的顶部,但我认为它可能不是解决它的好方法。

那么,有没有其他办法解决这个问题?


此致

1 个答案:

答案 0 :(得分:1)

您只需要您定义类的文件。

Sinatra没有像rails这样的auto_load系统。因此,您需要满足所有需求。

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