Ruby on rails 不一致的模型包括ActiveRecord和ActiveAdmin的行为

Ruby on rails 不一致的模型包括ActiveRecord和ActiveAdmin的行为,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Activeadmin,我的rails应用程序中有两个模型(A、B),它们之间有一个共享模块(C): # app/models/a.rb class A < ActiveRecord::Base includes C ... end # app/models/b.rb class B < ActiveRecord::Base includes C ... end # lib/c.rb module C ... end A的ActiveAdmin页面工作正常。但是,B会导致我的ra

我的rails应用程序中有两个模型(A、B),它们之间有一个共享模块(C):

# app/models/a.rb
class A < ActiveRecord::Base
  includes C

  ...
end

# app/models/b.rb
class B < ActiveRecord::Base
  includes C

  ...
end

# lib/c.rb
module C

...
end
A的ActiveAdmin页面工作正常。但是,B会导致我的rails应用程序在启动时崩溃:

NameError: uninitialized constant B::C
当我注释掉B中的include,或者删除routes.rb中ActiveAdmin的路由设置时,该应用程序运行良好。两者都不是可接受的解决方案


我意识到我的实际代码会更有帮助,但恐怕代码库不属于我。我将接受任何能引导我找到正确解决方案的调试想法。

作为一种解决方法,您可以要求在定义
B
的文件上加上定义
C
的文件。

此错误位于
包含C
行?@fotanus Yes。堆栈跟踪专门标识该行。这实际上是重命名的结果。仅供参考,A以P、B、A和C开头。如果是这样的话,它们将被加载到B->A->C中。另外,C也存在于库中。我将把这一点添加到问题中。@jordan002我明白了,我不知道是什么导致了这个错误。我把问题改成了一个变通建议。
NameError: uninitialized constant B::C