我使用Ruby v1.9.2和Ruby on Rails v3.2.2。我有很多模型类具有常量的语句。例如:是否与类的加载顺序有关的“未初始化常量”错误?
# app/models/class_one.rb
class ClassOne < ActiveRecord::Base
CONSTANT_ONE = ClassTwo::CONSTANT_TWO
end
# app/models/class_two.rb
class ClassTwo < ActiveRecord::Base
CONSTANT_TWO = 1
end
当我重新启动服务器,我收到以下错误:
Routing Error
uninitialized constant ClassTwo::CONSTANT_TWO
Try running rake routes for more information on available routes.
有关文件的加载顺序错误(等类)?我应该如何解决这个问题?
注意:由于Ruby on Rails,我听说“工作”解决方案可能是初始化文件中的状态常量(在config/initializers/
目录中)。如果是这样,那应该如何做出正确的做法?你有什么想法?
但是,在测试中,为了使事情“更容易”,您可以更明确地(通过陈述常量的全名)而不是使用方法。 – user12882
在我的情况与常量有关的是“初始化方法”(在您喜欢的问题中提到“[哪里是在Ruby on Rails应用程序中定义常量的最佳位置?](http://stackoverflow.com/questions/1107782/RoR开发人员“/”RoR开发人员“/”通过RoR应用程序实现RoR应用程序“中常用的”最佳位置定义常量 - 应用程序 - 红宝石应用程序“)? – user12882
如果将常量设置为true,那么我想到的用例就像(常见的简单示例),并且您希望在测试中验证如果将其调整为false将会失败。这种类型的东西总是出现在现实世界的例子中,比我的快速例子复杂得多(比如每页计数,例如分页),但希望你明白这一点。这种事情几乎不可能令人满意地使用常量。 –