我在SQLite中使用Rails 4和ActiveAdmin。
app
models
system
- admin_user.rb
- customer.rb
resources
- document.rb
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}')]
class System::AdminUser < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
end
-
因此,当我尝试运行rake db:migrate
时,我收到此错误:
LoadError: Unable to autoload constant AdminUser, expected /Users/john/testing/app/models/System/admin_user.rb to define it
我做错了吗?
答案 0 :(得分:4)
Rails可以自动地在app / models的子文件夹中找到正确命名空间的类,而无需执行任何特殊操作。由于您已将app / models的子文件夹添加到自动加载路径,因此Rails现在希望在这些位置找到非命名空间的类。
如果删除自动加载路径更改并按Mohanraj建议定义您的类:
# app/models/system/admin_user.rb
module System
class AdminUser
# your code here
# ...
end
end
那么你应该没有任何问题。