我在Rails应用程序ApplicationName
下有一些类。它们在我的应用程序服务器启动时作为Rails的一部分自动加载。有些是ActiveRecord
模型,有些是PORO模型,有些是服务类,也是PORO&。其中一些类具有相同的名称,但位于不同的名称空间中,例如User
和NameSpaced::User
,它们表示具有相似概念的不同对象。
在其中一个命名空间类中,我做了一些ETL工作,以便将外部对象融合到我的数据库中的ActiveRecord
模型中。由于默认情况下ActiveRecord
模型位于全局ApplicationName
命名空间下,因此我认为ApplicationName::ModelName
会起作用,我希望它返回顶级对象(ActiveRecord
模型) 。相反,我得到了一个未初始化的常量错误。 ApplicationName::Application::ModelName
返回它,但是我收到一个关于引用toplevel命名空间的类的警告(正如我所料,考虑到ActiveRecord
对象驻留在那里)。 ModelName
模型与不同命名空间下的另一个模型冲突(为了论证我们称之为DifferentNameSpace
)。事情看起来像:
module ApplicationName
class Application < Rails::Application
# do autoload stuff here
end
end
class ModelName
end
module DifferentNameSpace
class ModelName
end
end
有没有办法在没有警告的情况下专门致电ApplicationName::ModelName
或进行ApplicationName::Application::ModelName
?现在它可以工作::ModelName
,但看起来很难看。