我正在使用 Rails 4.0.2。我在关注目录中添加了子目录(带有模型名称):
- /app/models/concerns/company/cache_concern.rb
- /app/models/concerns/user/cache_concern.rb
- /app/models/concerns/document/cache_concern.rb
公司目录中的 cache_concern.rb 有以下内容:
module Company::CacheConcern
included do
...
end
end
在我的模型课上,我有:
class Company
include Company::CacheConcern
...
end
一切都很好,直到我开始生产。然后我得到以下异常:
`load_missing_constant':自动加载常量 Company::CacheConcern (RuntimeError) 时检测到循环依赖
为了解决我的问题,我将关注文件中的命名空间从 Company::CacheConcern 更改为 Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序。
但是现在我在使用公司类的关注文件中的开发环境存在问题:
NoMethodError(Concerns::Company:Module 的未定义方法“current_company”):
所以看起来他正在关注目录中搜索。在生产中一切都很好。为了解决这个问题,我可以在关注文件的类名前添加两个冒号来使用模型目录中的类。
我知道生产模式的行为与开发模式不同,因为将整个应用程序缓存在内存中。我检查了所有类似的帖子。我是否需要在模型目录中的类名前面在关注文件中使用两个冒号?如果有人能向我解释这种奇怪的情况,我将不胜感激。
谢谢