Ruby:引用另一个具有相同名称的类中的一个类

时间:2015-01-05 09:52:16

标签: ruby-on-rails ruby

在我的具体情况下,我有Mongo模型,但我想这个问题更为笼统。

我有一个名为" Map"的模型,另一个名称相同的模型,但在模块中。我需要第二个模型属于第一个模型。

代码段:

# Ruby version: 2.1.5

# app/models/map.rb
class Map
  include Mongoid::Document
end

# app/models/base_content.rb
class BaseContent
  include Mongoid::Document
end

# app/models/content/map.rb
class Content::Map < BaseContent
  belongs_to :map, class: ::Map
end

建议的方法是什么?如果我在上面的代码片段中这样做,我会得到循环依赖性错误。

更新

当我使用class_name时:&#39; Map&#39;正如AJcodez所建议的那样,这就是我在控制台中得到的结果:

[1] pry(main)> Map
RuntimeError: Circular dependency detected while autoloading constant Map
from /home/m/.rvm/gems/ruby-2.1.5/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:478:in `load_missing_constant'
[2] pry(main)> Content::Map
=> Content::Map

1 个答案:

答案 0 :(得分:0)

您应该将class: ::Map更改为class_name: 'Map',以避免自动加载循环依赖关系。