gpt4 book ai didi

ruby-on-rails-4 - 异常 : "load_missing_constant Circular dependency detected while autoloading constant" in Rails

转载 作者:行者123 更新时间:2023-12-04 06:59:32 25 4
gpt4 key购买 nike

我正在使用 Rails 4.0.2。我在 Concern 目录中添加了子目录(带有模型名称):

  • /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': Circular dependency detected while autoloading constant Company::CacheConcern (RuntimeError)



    为了解决我的问题,我将关注文件中的命名空间从 Company::CacheConcern 更改为 Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序。

    但是现在我在使用 Company 类的行中的关注文件的开发环境中遇到问题:

    NoMethodError (undefined method `current_company' for Concerns::Company:Module):



    所以看起来他正在关注目录中搜索。在生产中一切都很好。为了解决这个问题,我可以在类名前添加两个冒号来使用模型目录中的类。

    我知道生产模式与开发的行为方式不同,因为将整个应用程序缓存在内存中。我检查了所有类似的帖子。我是否需要在模型目录中的类名前面加上两个冒号在关注文件中?如果有人能向我解释这种奇怪的情况,我将不胜感激。

    谢谢

    最佳答案

    你这样做我认为是错误的:
    为了解决我的问题,我将关注文件中的命名空间从 Company::CacheConcern 更改为 Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序。

    而是这样做

    Companies::CacheConcern 并将您的文件夹重命名为 company/cache_concern.rb

    关于ruby-on-rails-4 - 异常 : "load_missing_constant Circular dependency detected while autoloading constant" in Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238587/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com