ActiveAdmin - 未初始化的常量 AdminUser
Posted
技术标签:
【中文标题】ActiveAdmin - 未初始化的常量 AdminUser【英文标题】:ActiveAdmin - uninitialized constant AdminUser 【发布时间】:2013-05-30 03:02:27 【问题描述】:我最近安装了 ActiveAdmin,在尝试运行我的应用时遇到错误。本来还好好的,但是闲置了一会儿,突然就不行了!
在我的 gem 文件中:
gem 'activeadmin'
在我的路线中:
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
在我的 admin_user.rb 中
ActiveAdmin.register AdminUser do
index do
column :email
column :current_sign_in_at
column :last_sign_in_at
column :sign_in_count
default_actions
end etc....
尝试运行时的错误:
NameError: uninitialized constant AdminUser
~/Desktop/Sites/Fleetnation/app/admin/admin_user.rb:1:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.11/lib/active_support/inflector/methods.rb:230:in `block in constantize'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.11/lib/active_support/inflector/methods.rb:229:in `each'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.11/lib/active_support/inflector/methods.rb:229:in `constantize'
...
有人有什么想法吗?将不胜感激。
【问题讨论】:
您迁移数据库了吗? app/models/admin_user.rb 存在吗? 是的......当然 - 错误是在我的管理文件夹中的 admin_user.rb 文件(ActiveAdmin.register AdminUser do etc..)的第一行触发的。 不,你少了一步。 app/admin/admin_user 是仪表板——但实际上你必须有一个作为 ActiveRecord::Base 对象的 app/models/admin_user.rb。 啊,我的错 - 一个疏忽。app/models/admin_user.rb
确实存在,并且一直存在。现在,无需更改任何内容,该应用程序就可以运行了。这一定是某种类型的本地错误。奇怪的。不过感谢您的帮助!
【参考方案1】:
尝试重新启动 rails 服务器。有类似的问题,重启后就解决了。
【讨论】:
不……恐怕不能解决它! 无论遇到多少次这个问题,安装新gem后总是忘记重启服务器。然后,我看到这样的答案,我记得。谢谢。 我不敢相信这是解决办法。 +1 提醒修复有时也很简单。【参考方案2】:只要您的模型中存在错误关联,就会引发此错误。如果您更改了任何关联,但忘记更新模型文件,您将收到此错误。
仔细检查您的模型文件。在本地打开活动管理员以查看它给您带来的错误(localhost:3000/admin)。它通常会显示uninitialized constant MyModel:MyBadAssociation
,因此可以帮助您诊断错误。
【讨论】:
【参考方案3】:将 app/models/admin_user.rb 重命名为 app/models/admin_users.rb 对我有帮助。
【讨论】:
以上是关于ActiveAdmin - 未初始化的常量 AdminUser的主要内容,如果未能解决你的问题,请参考以下文章