Non-deterministic NameError: uninitialized constant on ActiveRecord model

Non-deterministic NameError: uninitialized constant on ActiveRecord model

如标题所示,我正在为 app/models/workflow/task.rb 处定义的模型获取 NameError (uninitialized constant Workflow::Task)

我相信模型定义是正确的,因为它在 90% 的时间里都有效,但在 10% 的时间里我遇到这个名称错误并且它崩溃了。我 不能 在本地复制,这只发生在我们使用 Amazon Aurora 数据库的产品中。如果连接到数据库或类似问题时出现问题,是否会发生这种情况?任何指针表示赞赏

使用rails5.1.6.2

从错误消息中可以清楚地看出这不是与数据库相关的问题。简而言之,Rails 没有加载您的模型 class.

您可以尝试以下方法:

  1. 正如@max 评论的那样,将您的 class 定义为 module Workflow; class Task
  2. 您可以在 rails 自动加载路径中手动添加文件。将其放入 config/application.rbconfig.autoload_paths << Rails.root.join('app/models/workflow')
    • 不过,这应该不是问题。 Rails 加载 app 目录中的所有内容。

`