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

时间:2013-09-05 19:39:47

标签: 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

这两个模型都由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的路由设置时,该应用程序正常工作。两者都不是可接受的解决方案。

我意识到我的实际代码会更有帮助,但代码库不属于我,我担心。我将接受任何调试建议,使我找到正确的解决方案。

1 个答案:

答案 0 :(得分:1)

作为一种变通方法,您可以在定义C的文件顶部要求定义B的文件。