我的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
这两个模型都由ActiveAdmin页面管理:
ActiveAdmin.register A do
...
end
ActiveAdmin.register B do
...
end
A的ActiveAdmin页面运行正常。但是,B导致我的rails应用程序在启动时崩溃:
NameError: uninitialized constant B::C
当我在B中注释掉include时,或者在routes.rb中删除ActiveAdmin的路由设置时,该应用程序正常工作。两者都不是可接受的解决方案。
我意识到我的实际代码会更有帮助,但代码库不属于我,我担心。我将接受任何调试建议,使我找到正确的解决方案。
答案 0 :(得分:1)
作为一种变通方法,您可以在定义C
的文件顶部要求定义B
的文件。