我尝试将ActiveAdmin安装到已经具有Admin模型*的rails应用程序中,并且一切正常,直到我尝试运行任何需要访问Admin类的代码(例如运行规范或运行rails服务器)-然后它失败,就好像问题出在我的Admin类上一样:
foo/app/models/admin.rb:1:in `<top (required)>': Admin is not a class (TypeError)
from bar/.rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
*就我而言,我使用了--skip-users,因此我可以重用我的管理模型,但是无论您是否这样做,都会发生这种情况。如果您这样做,也会发生这种情况:
rails generate active_admin:install Admin
如何让 ActiveAdmin 与名为 Admin 的模型(或其他类)共存
我花了一段时间才解决这个问题(在以前的项目中,我屈服了,只是重命名了模型)。
已经提出了一些补丁,但实际上有一个非常好的配置选项可以解决这个问题:
在config/initializers/active_admin.rb
处编辑初始值设定项,使default_namespace不同(您可以使用 config.default_namespace = false
跳过default_namespace,但我还没有尝试过)。
我为此选择了admin_ui:
config.default_namespace = :admin_ui
这可能还有更多微妙之处,因此您可以(如果需要)保留/admin/路由而不是admin_ui但这对我来说已经足够好了——关于这个的官方文档在 http://activeadmin.info/docs/1-general-configuration.html#namespaces,但不要提到这个更改命名空间的原因。