简体   繁体   English

LoadError:无法自动加载常量

[英]LoadError: Unable to autoload constant

I have a model called Conversation in app/models/conversation.rb and a class called Messages::Conversation in app/lib/messages/conversation.rb . 我在app/models/conversation.rb有一个称为Conversation app/models/conversation.rb ,在app/lib/messages/conversation.rb有一个名为Messages::Conversation的类。 When I try to call Conversation from console (expecting to get the model) it returns: 当我尝试从控制台调用“ Conversation (期望获得模型)时,它将返回:

[1] pry(main)> Conversation
    LoadError: Unable to autoload constant Conversation, expected .../application/app/lib/messages/conversation.rb to define it
    [2] pry(main)> Messages::Conversation
    => Messages::Conversation

I also have a model/class called Message similar to the above Conversation . 我也有一个类似于上面的Conversation称为Message的模型/类。 Since I am namespacing these, why is still looking for Conversation in my Messages::Conversation file instead of just Conversation in app/models ? 由于我这些命名空间,为什么还在找Conversation在我Messages::Conversation文件,而不是只是Conversationapp/models

Does it have something to do with having a messages folder and Message model? 它与messages文件夹和Message模型有关吗? If I rename app/lib/messages/... to app/lib/messages_test/... , everything works as expected. 如果我将app/lib/messages/...重命名为app/lib/messages_test/... ,那么一切都会按预期进行。

Before

# config/application.rb
config.autoload_paths += Dir["#{config.root}/lib/**/"]

After

# config/application.rb
config.autoload_paths += Dir["#{config.root}/app/models/"]
config.autoload_paths += Dir["#{config.root}/lib/**/"]

Check your config/application.rb and see if it works when you make these adjustments. 检查您的config / application.rb并在进行这些调整时查看它是否有效。 Not 100% sure if it will work. 不能100%确定它是否会起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM